C++ 打开.txt文件并读取要放置在数组中的数字

c++ open .txt file and read numbers to place in an array

本文关键字:数组 数字 txt 打开 文件 读取 C++      更新时间:2023-10-16

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

    -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 中。另外,文件中的数字数量未知,所以我想远离硬编码

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

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

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

输入在

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

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

像这样

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

你必须告诉计算机跳过逗号,它不会为你这样做。