0

例 ABC.txt 10.f 30.2f 20.f

これらの情報を取得して、配列内に保存したいと考えています。しかし、私はそれを行う方法がわかりません。

次に、(適切であれば) num_get::get を呼び出して (ストリームの選択されたロケールを使用して) 抽出操作と解析操作の両方を実行し、それに応じてストリームの内部状態フラグを調整します。最後に、戻る前に歩哨オブジェクトを破棄します。

std::fstream filestr("ABC.txt", std::fstream::in);

if(!filestr.good()) //Logical error on i/o operation
{
  //Unable to process
  filestr.close();
  return;
}

unsigned index= 0;
unsigned count= 0;


while(filestr.good())
{
  float buffer= 0.f;
  filestr >> std::skipws >> buffer;
  score[index]= buffer;
  ++index;
}
filestr.close();
4

2 に答える 2

0

これを行うにはいくつかの方法があります。1 つの方法は、文字列ストリームをベクトルと文字列と組み合わせて使用​​することです。

#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <vector>
using namespace std;

int main() {
    std::ifstream filestr("C:\\nums.txt", std::fstream::in);
    std::vector<double> numbers;

    if (!(filestr.good())) {
        std::cout << "BAD FILE" << std::endl;
        exit(0);
    }
    else {
        std::string temp;
        double d = 0.0;

        while(std::getline(filestr, temp)) {
        std::istringstream iss(temp);

        while(std::getline(iss, temp, ' ')) {
            std::istringstream ist(temp);

            ist >> f;
            numbers.push_back(f);
        }
    }
    }

    //see that the vector has information in it
    for (int i = 0; i < numbers.size(); i++) {
        std::cout << numbers[i] << std::endl;
    }
    filestr.close();

    return 0;
}

ここでイテレータを使用することもできますが、これは自分で実装できることに注意してください。

于 2013-03-17T15:21:52.070 に答える