2011-02-04 9 views

答えて

2

一つの可能​​性は(私が希望よりもかなり多くの冗長が)で考えてみましょう。

std::string temp; 
std::getline(your_istream, temp); 

std::istringstream buffer(temp); 
std::vector<std::string> words((std::istream_iterator<std::string>(buffer)), 
           std::istream_iterator<std::string>()); 
+0

冗長に見えます。 (しかし、ねえ、私はC++を求めました)なぜFoo Bahのforループの代わりに 'std :: copy'を使うのですか? –

+1

@MTsoul:ほとんどの場合、アルゴリズムが完全に狂っていない限り(私はこの境界線を認めますが...) –

+1

'std :: copy()'は必要ありません。 'std :: vector'のコンストラクタを使います。 – wilhelmtell

0

あなたははistream :: getlineのを呼び出すことができます - 文字配列例えば

に読み込まれます

char buf[256]; 
cin.getline(buf, 256); 

をそして、あなたは内の個々のトークンのためのストリームと互換性のアクセサを使用したい場合ライン、istringstream

1

私は、stringにラインをバッファーにしてからstringstreamを使って、その内容を解析することをお勧めします。string例:

string line; 
getline(fileStream, line); 

istringstream converter(line); 
for (string token; converter >> token;) 
    vector.push_back(token); 

C++でC文字列読み取り関数を使用することを慎重にしてください。 std::string I/O機能ははるかに安全です。

関連する問題