0

改行文字が見つかるまで文字を読み取るクロスプラットフォームパーサーを作成する方法はありますか?Linuxでは「\0」を使用していますが、Windowsでもこれを実行できるかどうかはわかりません。

std::string line;
// fill the line
QTextStream ss(&line);

for(;;)
{
    ss >> c;
    if(c == '"' || c=='\0' ) // here I want to continue parsing until a new-line character or a ending double quote is found 
        break;
}
4

2 に答える 2

6

C++ テキスト ストリーム (std::istreamおよび、ファイル ストリームを開くときにフラグが設定されていstd::ostreamない場合) を操作している場合、C++ は の入力と出力をプラットフォームに依存しない方法で処理します。ios_base::binary\n

つまり\r\n、Windows で を含むファイルを読み取ると、これが であるかのように扱われ\n、同様に出力する\nと、プラットフォーム固有の改行文字が出力されます。

連続した行を読む必要がある場合、最も簡単な方法は以下を使用することgetlineです:

std::string line;
while (getline(std::cin, line)) {
    // process line
}

\0改行文字として扱われることはありません。

于 2012-06-26T09:40:02.057 に答える
0

C の改行文字は '\0' ではなく '\n' です。現在のプラットフォームが使用するものに変換されます。

于 2012-06-26T09:32:05.557 に答える