c ++打开.txt文件并读取数字以放入数组中

时间:2013-10-09 20:15:55

标签: c++ file file-io fstream

我有一个文本文件,其中一行上的数字(逗号之间没有空格):

    -1,5,-3,10,500000,-6000

到目前为止,这是我的代码,但我在向量数组中没有得到任何回复

fstream fp;
vector<int> numbers;
int number;

fp.open("numbers.txt", ios::in | ios::binary);

if(fp.is_open()){
  while(fp >> number){
     numbers.push_back(number);
  }
}

fp.close();

cout << "Numbers:\n";
for (int i=0; i < numbers.size(); i++) {
    cout << numbers[i] << '\n';
}

我觉得我只是没有正确阅读文件,或者整条线只是放入数字var。此外,文件中的数字是未知的,所以我想远离硬编码

4 个答案:

答案 0 :(得分:4)

fstream fp;
vector<int> numbers;
int number;

fp.open("numbers.txt", ios::in | ios::binary);

if(fp.is_open()){
  while(fp >> number){
     numbers.push_back(number);
     fp.get();
  }
}

fp.close();

cout << "Numbers:\n";
for (int i=0; i < numbers.size(); i++) {
    cout << numbers[i] << '\n';
}

你忘记了逗号!使用fp.get();摆脱他们,然后它会工作正常:D

答案 1 :(得分:2)

首先,您的输入文件不是二进制文件 - 请勿使用ios::binary

其次,您需要拆分输入令牌。每次偶然发现逗号时,您的输入操作都会失败。您可能需要输入一个字符或字符串来处理它们。

答案 2 :(得分:1)

当您尝试将,插入整数时,您的输入失败。您应该使用getline将值插入到逗号分隔符:

while (std::getline(fp, number, ','))
//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

答案 3 :(得分:0)

喜欢这个

if(fp.is_open()){
  while(fp >> number){
     numbers.push_back(number);
     char dummy_variable_for_the_comma;
     fp >> dummy_variable_for_the_comma; // read and discard a comma
  }
}

您必须告诉计算机跳过逗号,它不会为您执行此操作。