fc2ブログ
このBlogは99%の妄言と1%の真実で出来ています
■ Tag Cloud
[ std::getlineについての覚書 ] List
[2009/02/24] std::getlineについての覚書
□Profile
IDとか

luluci

Author: luluci

Twitter: luluci

HomePage: luluciの

ブクログ: luluci

GitHub: luluci

□Additional
あわせて読みたいブログパーツ
□FC2カウンター
[C++] std::getlineについての覚書
2009/02/24/Tue @ 12:20 CM(0) TB(0) [admin]
std::getlineは入力ストリームから1行文の文字列を取り出してくれる。
このとき、どこを文字列の終わりかとするのは環境によって異なる。

・vc
"\r\n"を文末として、そこまでの文字列を取り出す。

・gcc
"\n"を文末として、そこまでの文字列を取り出す。

gccの場合、"\r"がそのまま残っちゃうんだよね。
で、この"\r"が残ってると、何故かboost::algorithm::splitがエラー吐いて止まる。

緊急回避としてこんなプログラムをはさんだ。
gccでも"\r\n"を認識してくれていいと思う。

// 改行コードを削除
if (line[line.size()-1] == '\n') line.erase(line.size()-1);
if (line[line.size()-1] == '\r') line.erase(line.size()-1);


さらにメモ。
getlineの終了条件。
これで期待通りの動作をしてくれる。

while ( std::getline(std::cin, line) ) {
std::cout << line << std::endl;
}
■ コメント
■ トラックバック
この記事のトラックバックURL - http://luluci.blog44.fc2.com/tb.php/45-0e054c0a