質問

私が読んはistream :: を取得し、疑問がまだハングします。のは、私の区切り文字は、実際にこのケースでは何が起こるかNULL「\ 0」文字、あるとしましょうか?私は何を読む:

If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded). The ending null character that signals the end of a c-string is automatically appended at the end of the content stored in s.

私は「readlineの」上「GET」好む理由は、「ストリームバッファ」に文字列を抽出する機能である。

役に立ちましたか?

解決

あなたはこのような何かを持っている場合は、区切り文字は入力ストリームで立ち往生得ることはありません。

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}
あなたが区切り文字と文字列として「\ 0」を持っている場合は、

ただの例では、1024バイトよりも大きくはありません。

他のヒント

私はいけない」かなりあなたの問題を取得します。

MSDNのWebサイトで、get関数のために、それは言います:

  

は、すべての場合において、デリミタはどちらストリームから抽出されていないや関数によって返されます。 getline関数は、対照的に、抽出物が、区切り文字を格納しません。   すべての場合において、区切り文字はどちらもストリームから抽出されていないにも関数によって返されました。対照的に、getline関数、抽出物が、区切り文字を格納しない。

http://msdn.microsoft.com/ EN-US /ライブラリ/ aa277360(VS.60).aspxの

私は、MSDNサイトは、区切り文字がストリームから抽出なく、また機能VY返さもされていないことを伝えますので、あなたは、問題を持っているつもりはないと思う。

それとも私はここでのポイントを逃してる?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top