0

次のような1行に数字が含まれるテキストファイルがあります(コンマ間にスペースはありません):

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

ファイルを正しく読み取っていないか、行全体が数値変数に入れられているように感じます。また、ファイル内の数字の数は不明なので、ハードコーディングは避けたいと思います

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 に答える
1

,aを整数に挿入しようとすると、入力が失敗します。getlineコンマ区切りまで値を挿入するために使用する必要があります。

while (std::getline(fp, number, ','))
//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
于 2013-10-09T20:19:47.883 に答える