2017-09-07 14 views
1

達成しようとしているのはを使用して、.txtファイルから1行ずつデータを読み込み、変数inValに文字列として保存することです。次に、文字列に含まれる個々の数値を、オブジェクト関数ArrayBag.add(value)に渡すことによって、オブジェクト配列内の個々の要素に保存します。これまで私はinValにデータを読み込めましたが、私が試したことはありませんでした。getline()の後のコードを含む文字列の数値を変換して保存することはできませんでした。ご指摘やご指摘をいただければ幸いです。配列内の要素に文字列内のintを保存する方法

.txtファイルには、次のようになります。

3 4 5 7 5 16 7 12 11 12 3 9 9 8 1 12 
15 4 3 6 1 12 3 12 7 8 19 9 11 12 8 5 -4 -100 
これまでに書かれたアイブ

私のコードは次のようである:

void readInv(ArrayBag &ArrayBag1, ArrayBag &ArrayBag2) { 
    //ArrayBag1 and ArrayBag2 are objects of class ArrayBag 

    std::string inVal; 
    //value to hold each line in file 

    std::ifstream readFile; 
    readFile.open("setInventory.txt"); //"setInventory.txt" is the txt file being read from. 

    if (readFile.is_open()) { 
     std::cout << "File is being read." << std::endl; 

     while(!readFile.eof()) { 
      getline(readFile, inVal); 

      for(int i = 0; i < inVal.size(); i++) { 
       std::cout << inVal[i] << std::endl; 

       ArrayBag1.add(inVal[i] - '0'); 
       //ArrayBag1.add() is the public member function used to add the 
       //passing value to the private member array. 
      } 
     } 
    } 
} 
+0

を使用することができると思いますトピック(しかしすぐに来るバグを解決する):[なぜiostream :: eofループ内のconditi (https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – user4581301

+1

[行単位でファイルを読む](https: //stackoverflow.com/questions/7868936/read-file-line-by-line)。具体的には、1オプション2に答えてください。 – user4581301

+0

これに 'std :: vector'を使用できない理由はありますか?ベクトルは配列よりもはるかに優れています。 – Sailanarmo

答えて

1

私はあなたがオフstringstream

stringstream ss{readFile}; 
    while(ss) 
{ 
    //doing something 
    int a; 
    ss>>a; 
    ArrayBag1.add(a); 
} 
関連する問題