我写了以下程序:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream theFile("students_info.txt");
cout<<"Enter the data as requested"<<endl;
cout<<"Press ctrl+z to exit"<<endl;
string name, address;
int contact[10];
while(cin >> name >> address >> contact) {
theFile << "\nName: " << name
<< "\n Address: " << address
<< "\nContact: " << contact[10] << endl;
}
theFile.close();
return 0;
}
我从while循环条件中得到以下编译错误:
与&#39;运算符&gt;&gt;&#39;
不匹配
根据我的理解,我的情况意味着如果不是按照这种顺序进入,请离开循环!!
编辑:解决了我的问题 1:没有运营商&gt;&gt;对于一个数组。 2:可以简单地使用int类型 3:如果不得不使用数组..需要一个一个地把它...
谢谢你的帮助
答案 0 :(得分:1)
你的代码几乎没问题。这样就可以了:
while(cin >> name >> address) {
..
}
但是,operator >>
无法处理一组int(int contact[10]
)!所以你必须通过int读取它,例如:
while(cin >> name >> address >> contact[0] >> contact[1] >> ...) {
..
}
或将其替换为:
while(true) {
cin >> name;
if (!isValidName(name))
return; // or handle otherwise
cin >> address;
if (!isValidAddress(address))
return; // or handle otherwise
for (int i = 0; i < sizeof(contact)/sizeof(contact[0]); i++) {
cin >> contact[i];
if (!isValidContact(contact[i])
return; // or handle otherwise
}
}
请注意,我添加了输入验证。始终验证用户输入!