文件处理 - 错误:不匹配'运算符>>' in while循环(c ++)(code :: block)

时间:2017-10-11 22:08:02

标签: c++

我写了以下程序:

#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:如果不得不使用数组..需要一个一个地把它...

谢谢你的帮助

1 个答案:

答案 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
    }     
}

请注意,我添加了输入验证。始终验证用户输入!