【发布时间】:2018-06-01 15:28:32
【问题描述】:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
void cpp_string();
void cstyle_string();
int main()
{
cpp_string();
cstyle_string();
system("pause");
return 0;
}
void cpp_string()
{
string fName, lName;
char grade;
int age;
cout << "What is your first name?";
getline(cin, fName);
cout << "What is your last name?";
getline(cin, lName);
cout << "What letter grade do you deserve?";
cin >> grade;
cout << "What is your age?";
cin >> age;
cout << "Name: " << fName << ", " << lName << endl;
cout << "Grade: " << grade << endl;
cout << "Age: " << age << endl;
return;
}
void cstyle_string()
{
char fNm[20], lNm[20];
char grade;
int age;
cout << "What is your first name?";
cin.get(fNm, 20).get();
cin.clear();
cout << "What is your last name?";
cin.get(lNm, 20).get();
cout << "What letter grade do you deserve?";
cin >> grade;
cout << "What is your age?";
cin >> age;
cout << "Name: " << fNm << ", " << lNm << endl;
cout << "Grade: " << grade << endl;
cout << "Age: " << age << endl;
return;
}
我得到的输出是
What is your first name?demiurge conon
What is your last name?no
What letter grade do you deserve?a
What is your age?22
Name: demiurge conon, no
Grade: a
Age: 22
What is your first name?What is your last name?What letter grade do you deserve?What is your age?Name: ,
Grade: ╠
Age: -858993460
Press any key to continue . . .
但如果我在不同的文件中运行cstyle_string(),那么我不会收到任何错误代码可以完美运行。
我想知道为什么会这样?
【问题讨论】:
-
您正在呼叫
cpp_string()和cstyle_string()。一次只能调用一个。因为他们消耗输入。 -
它们都在不同的时间运行......我的意思是首先 cpp_string() 将运行,然后在它返回后,cstyle_string() 将运行。当我没有在 cpp_string() 中使用 cin.get() 时,它运行良好。在此之前,我使用 cin>>fname 进行输入,效果很好,但只需要一个单词,所以我使用 get() 来获取一行字符。现在代码不工作了。
标签: c++