0

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

    -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

4 回答 4

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

于 2013-10-09T20:26:29.810 回答
2

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

其次,您需要拆分输入标记。每次偶然发现逗号时,您的输入操作都会失败。您可能需要输入一个字符或字符串来处理这些问题。

于 2013-10-09T20:17:59.377 回答
1

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

while (std::getline(fp, number, ','))
//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
于 2013-10-09T20:19:47.883 回答
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
  }
}

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

于 2013-10-09T20:20:22.313 回答