ファイルから行ごとの入力を行う場合 (トークン化のために行を文字列に読み込む場合)、getline または istream_iterator のいずれかを優先する理由があるはずです。
3512 次
3 に答える
15
私は時々(状況に応じて)使用できるようにラインクラスを作成しますistream_iterator
:
#include <string>
#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>
struct Line
{
std::string lineData;
operator std::string() const
{
return lineData;
}
};
std::istream& operator>>(std::istream& str,Line& data)
{
std::getline(str,data.lineData);
return str;
}
int main()
{
std::vector<std::string> lines(std::istream_iterator<Line>(std::cin),
std::istream_iterator<Line>());
}
于 2009-11-13T18:26:30.083 に答える
6
getline
行全体を取得しますが、istream_iterator<std::string>
個々の単語 (空白で区切られたもの) を取得します。
何を達成しようとしているのかによって異なりますが、どちらが優れているかを尋ねる場合 (トークン化はほんの少しです。たとえば、適切に形成されたプログラムを期待していて、それを解釈することを期待している場合は、行全体を読む方が良い場合があります.. .)
于 2009-11-13T15:12:47.557 に答える