为什么我的 C++ 代码在执行前没有接受所有输入?它只接受输入并打印所有 cout 内容
Why my C++ code is not taking all inputs before execution? It just take a input and print all cout content
这是我的代码和结果
我只是先创建一个结构,然后设置一个 for 循环以使用该元素并从用户那里获取输入并在代码部分的最后显示。
请帮助我
#include <iostream>
using namespace std;
struct person
{
char name[30];
int age;
int phone_no;
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin.get(p[i].name,30);
cout<<"\n Enter your age : ";
cin>>p[i].age;
cout<<"\n Enter your phone no : ";
cin>>p[i].phone_no;
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}
结果
Enter you details
Enter your name : Ram
Enter your age : 12
Enter your phone no : 9898874645
Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no :
Person's name : Ram
Age : 12
Phone no : 2147483647
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Process exited after 12.16 seconds with return value 0
Press any key to continue . . .
如果您对我的代码技巧有了解,我也想给您一些有用的建议
啊,我真的不知道为什么,但是 c++ 在 cin.get();
上有问题 它在 cin
上工作得很好:
#include "iostream"
using namespace std;
struct person
{
char name[30];
int age;
int phone_no;
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin>>p[i].name;
cout<<"\n Enter your age : ";
cin>>p[i].age;
cout<<"\n Enter your phone no : ";
cin>>p[i].phone_no;
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}
问题是:
- phone 数字太大,无法放入此环境中的
int
。它应该存储为字符串。
>>
cin
的运算符在流中留下换行符,因此下一个 cin.get()
将读取它并停在那里。您可以阅读直到换行符并删除通过 cin.ignore()
阅读的内容。请注意 cin.get()
也会留下换行符,但 >>
运算符会善意地忽略它。
试试这个:
#include <iostream>
#include <limits>
using namespace std;
struct person
{
char name[30];
int age;
char phone_no[30];
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin.get(p[i].name,30);
cout<<"\n Enter your age : ";
cin>>p[i].age;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout<<"\n Enter your phone no : ";
cin.get(p[i].phone_no,30);
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}
这是我的代码和结果 我只是先创建一个结构,然后设置一个 for 循环以使用该元素并从用户那里获取输入并在代码部分的最后显示。 请帮助我
#include <iostream>
using namespace std;
struct person
{
char name[30];
int age;
int phone_no;
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin.get(p[i].name,30);
cout<<"\n Enter your age : ";
cin>>p[i].age;
cout<<"\n Enter your phone no : ";
cin>>p[i].phone_no;
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}
结果
Enter you details
Enter your name : Ram
Enter your age : 12
Enter your phone no : 9898874645
Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no : Enter you details
Enter your name :
Enter your age :
Enter your phone no :
Person's name : Ram
Age : 12
Phone no : 2147483647
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Person's name :
Age : 0
Phone no : 0
Process exited after 12.16 seconds with return value 0
Press any key to continue . . .
如果您对我的代码技巧有了解,我也想给您一些有用的建议
啊,我真的不知道为什么,但是 c++ 在 cin.get();
上有问题 它在 cin
上工作得很好:
#include "iostream"
using namespace std;
struct person
{
char name[30];
int age;
int phone_no;
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin>>p[i].name;
cout<<"\n Enter your age : ";
cin>>p[i].age;
cout<<"\n Enter your phone no : ";
cin>>p[i].phone_no;
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}
问题是:
- phone 数字太大,无法放入此环境中的
int
。它应该存储为字符串。 >>
cin
的运算符在流中留下换行符,因此下一个cin.get()
将读取它并停在那里。您可以阅读直到换行符并删除通过cin.ignore()
阅读的内容。请注意cin.get()
也会留下换行符,但>>
运算符会善意地忽略它。
试试这个:
#include <iostream>
#include <limits>
using namespace std;
struct person
{
char name[30];
int age;
char phone_no[30];
}p[5];
int main()
{
for (int i=0; i<5; ++i)
{
cout<<"Enter you details \n\n\n";
cout<<" Enter your name : ";
cin.get(p[i].name,30);
cout<<"\n Enter your age : ";
cin>>p[i].age;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout<<"\n Enter your phone no : ";
cin.get(p[i].phone_no,30);
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
for (int i=0; i<5; ++i)
{
cout<<"\n\n\n Person's name : "<<p[i].name<<"\n Age : "<<p[i].age<<"\n Phone no : "<<p[i].phone_no;
}
return 0;
}