1

ファイルから行ごとの入力を行う場合 (トークン化のために行を文字列に読み込む場合)、getline または istream_iterator のいずれかを優先する理由があるはずです。

4

3 に答える 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 に答える