6

ファイル ストリームに挿入する\nと、システムに適した行末シーケンスがファイルに書き込まれることがわかっています (たとえば\r\n、Windows の場合)。エンドラインを挿入するstd::stringstreamと、システムに適した行末シーケンスが文字列に書き込まれますか? 例えば:

#include <sstream>

int main()
{
    std::ostringstream oss;
    oss << std::endl;
    std::string endlineSequence = oss.str();
    bool isWindows = enlineSequence == "\r\n";
    bool isOldMac  = endlineSequence == "\r";
    bool isUnix    = endlineSequence == "\n";
    // Will this work???
}
4

2 に答える 2

15

システム固有の行末は、テキストファイルにのみ関係します。ストリームがメモリ内にのみある限り、それは単なる'\n'.

于 2011-07-28T20:44:08.563 に答える
3

短い答え:いいえ

長い答え:

テキスト モードのファイル ストリームは、プラットフォーム固有の ELS をファイルに挿入します。\nただし、ELS はファイルの読み取り時に変換されるため、アプリケーションはこれを認識しません。そのため、ファイル ストリーム (テキスト モード) でも、ELS は表示されません。

に戻りstd::stringstreamます。コードがプラットフォーム固有の ELS を挿入した場合 (そうではありません)、ストリームを\n読み取ると、ELS が元に変換されることを期待するのと同じように、ストリームを読み返すときにまだ表示されることが期待されます。そうする意味はほとんどありません。

于 2011-07-28T22:11:37.137 に答える