0

このように構成されたtxtファイルを読む必要があります

0,2,P,B
1,3,K,W
4,6,N,B
etc.

ここで、arr[X][4]
のような配列を読み込む必要があります。問題は、このファイル内の行数がわからないことです。
さらに、2つの整数と2つの文字が必要です...

このサンプルコードで読めると思います

ifstream f("file.txt");
while(f.good()) {
  getline(f, bu[a], ',');
}

明らかに、これは私が使用できると思うものだけを示しています....しかし、私はどんなアドバイスも受け入れます

前もってthxと私の英語のためにsry

4

1 に答える 1

5

structファイル内の単一行を表す単純な を定義しvector、それらstructの を使用します。を使用するvectorと、動的割り当てを明示的に管理する必要がなくなり、必要に応じて拡張されます。

例えば:

struct my_line
{
    int first_number;
    int second_number;
    char first_char;
    char second_char;

    // Default copy constructor and assignment operator
    // are correct.
};

std::vector<my_line> lines_from_file;

行全体を読んでから、投稿されたコードでは行に 5 つのコンマ区切りフィールドが許可されるため、それらを分割します。たとえば、4 つだけが予想される場合です。

std::string line;
while (std::getline(f, line))
{
    // Process 'line' and construct a new 'my_line' instance
    // if 'line' was in a valid format.
    struct my_line current_line;

    // There are several options for reading formatted text:
    //  - std::sscanf()
    //  - boost::split()
    //  - istringstream
    //
    if (4 == std::sscanf(line.c_str(),
                         "%d,%d,%c,%c",
                         &current_line.first_number,
                         &current_line.second_number,
                         &current_line.first_char,
                         &current_line.second_char))
    {
        // Append.
        lines_from_file.push_back(current_line);
    }

}
于 2012-09-17T10:31:20.607 に答える