2016-11-29 9 views
-1

私は次のテキストファイルを持っています。4文字でC++でテキストファイルを読むには?

aaaaBBBBccccDDDDKKK 
EEEEPPPPMMMMssssPPPP 
AAAAEEEE 
AAAAEEE 
DDDDCCCC 

そして、私は4文字で分けてC++でテキストファイルを読まなければなりません。

と私は4つの長さの文字を1つの配列の文字列に挿入します。

たとえば、 aaaa、BBBB cccc、DDDD、kkk、各単語を配列に分割します。私は、上の方法でテキストを読むことができますどのように 文字列WordArray [N] [M]

WordArray[0][0] = "aaaa"; 
WordArray[0][1] = "BBBB"; 
WordArray[0][2] = "cccc"; 
WordArray[0][3] = "DDDD"; 
WordArray[0][4] = "KKK"; 

WordArray[1][0] = "EEEE"; 
WordArray[1][1] = "PPPP"; 
WordArray[1][2] = "MMMM"; 
WordArray[1][3] = "ssss"; 
WordArray[1][4] = "PPPP"; 
. 
. 
. 

WordArray[4][0] = "DDDD"; 
WordArray[4][1] = "CCCC"; 

私は<fstream>を使いたいです。

+0

あなたはこのためにいくつかの不完全または不正なコードを持っていますか?私たちはあなたのためにそれを書くつもりはありません。 – aschepler

+2

['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)、[' std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)、['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)および[' std :: string :: substr '](http://en.cppreference.com/w/cpp/string/basic_string/substr)関数を呼び出します。 –

+0

@Someprogrammerdude私は自分の答えを投稿した後まであなたのコメントを見たことはありませんでしたが、ええ。 [実際には望んでいた](http://stackoverflow.com/q/40869519/2642059)これを行うために 'istream_iterator'を使うよりインテリジェントな方法がありました。 –

答えて

1

ファイルを正常に開いたとしましょう:ifstream pFILEそして、あなたのコンテナは:vector<vector<string>> WordArrayそして、あなたはこのような何かを行うことができます。

string line; 

for(size_t word = 0U; pFILE; word = 0U) { 
    getline(pFILE, line, '\n'); 
    WordArray.push_back(vector<string>()); 

    do { 
     const size_t nextWord = line.find_first_not_of(line[word], word); 

     WordArray.back().push_back(line.substr(word, nextWord - word)); 
     word = nextWord; 
    } while(word != string::npos); 
} 

Live Example

3

はあなたが4つの文字として各ブロックを扱うことができhttp://www.cplusplus.com/reference/istream/istream/read/

を見てみましょう。とにかくあなたはWordArrayのタイプも指定していないので、フレキシブルであると仮定します(変更される可能性があります)