0

ファイルを読み取る必要がある C++ プログラムを作成しています。そのファイルに一連の文、たとえば段落が含まれている場合、段落全体を単一の文字列として読み取るにはどうすればよいですか? これをコーディングしようとすると、プログラムは最初の単語しか読み取れず、スペースシーケンスを検出すると停止します。

例えば:

私の文が次の場合:you are a great programmer.

次のように表示されます。you are a great programmer.

しかし、私が得るものは:you

これをコーディングする方法...誰かが例を手伝ってくれますか?

これが私がこれまでに試したことです:

string b;
    ifstream inFile( "file.txt", ios::in );
    if ( !inFile ) { cerr << "File could not be opened" << endl; exit( 1 ); } 
    inFile>>b;
4

3 に答える 3

4

入力ストリームは、デフォルトでスペースを文字列分割区切り文字として扱います。std::getline()which で改行文字まで読み取っ てみてください。

段落全体を読むには、空の行が段落の終わりを示していると想定できます。したがって、空の行に到達するまで読んでください。

std::string read_paragraph( std::istream& is )
{
    std::stringstream ss;
    std::string line;

    do
    {
        std::getline( is , line );
        ss << line;
    } while( line != "" )

    return ss.str();
}

上記のコードは、ストリームを 1 行ずつ読み取り、現在の行を に格納して、段落を格納するlineにフラッシュします。std::stringstream現在の行が空行になるまで入力を読み取ります。

于 2013-11-10T17:32:53.267 に答える
0

std::getline区切り文字を EOF 文字として使用できます。

using std::istream::traits_type;

std::string paragraph;
char eof = traits_type::to_char_type(traits_type::eof());

if (std::getline(file, paragraph, eof))
{
    // ...
}
于 2013-11-10T17:44:02.800 に答える