0

テキスト ファイルは、次のようにフォーマットされます。

2 列 2 行 all * go (このようにさらに 4 行)

テキスト行ごとに、テキスト行で指定された情報に基づいて 2D ベクトルを作成し、コンソールに出力する必要があります。たとえば、テキストの最初の行の出力は次のようになります。

**

**

プログラムに情報を読み込むことができます。しかし、それ以上進む方法がわかりません。ベクトルに 2 列と 2 行が必要であることをプログラムが認識できるように、情報を分類するにはどうすればよいですか?

ヒントやヘルプをいただければ幸いです。

ありがとう!

4

1 に答える 1

0

入力を解析してそこから情報を取得する必要があるようです。現在、boost::spiritのようなライブラリがありますが、この単純なケースだけが必要な場合は、1 つのケースだけにこのような大きなライブラリを使用する必要はありません。

次のように、入力文字列を単語に単純に分割することをお勧めします。

string input = "2 columns 2 rows all * go"; // Read it from some input
istringstream iss(input);

vector<string> tokens;
copy(istream_iterator<string>(iss),
     istream_iterator<string>(),
     back_inserter<vector<string> >(tokens));

それからtokensあなたの言葉です。したがって、最初の単語が列用で、3 番目の単語が行用であると予想される場合は、次のように実行できます。

int columns = atoi(tokens[0].c_str());
int rows = atoi(tokens[2].c_str());

あとはお分かりいただけると思います。

お役に立てれば。

于 2012-09-27T05:47:04.667 に答える