にNULLを返すことのiOS 5.0で、予想されるとして、それが正常に動作します...しかし、iOSの5.1で、それはNULLを返します以下char * dest
にstringstreamのsgetnは、私は、コードを持っているのiOS 5.1
static size_t copyStreamData(std::stringstream & ss, char * const & source, char * dest)
{
ss.str("");
ss.clear();
ss << source;
size_t ret = ss.rdbuf()->sgetn(dest, (std::numeric_limits<size_t>::max)()) ;
dest[ret] = 0;
return ret;
}
からstd::stringstream
のコピー内容。
私は間違っていますか?どのように私のコードにパッチを当てることができますか?私はsgetn
がsgetn
戻りstd::streamsize
ないポインタ型として、NULLを返している疑い
std::size_t length = std::strlen(source) + 1; // + 1 for '\0'
std::copy(source, source + length, dest);
// Assuming dest has length + 1 bytes allocated for it
を:あなたが何をしようとして
このコードは、文字列をコピーして使用した文字数を返します。また、自分の文字列ストリームを構築しない理由は、 。 – 111111
私はコピーを作成しましたが、これが動作していない理由を調べたいのですが... – Alkimake
@Alkimake:実際には、あなたは 'std :: stringstream'のコンテンツをコピーしていません。関数)。いくつかの奇妙な理由のために、あなたは 'ソース'から 'ss'へ、そして' ss'から 'dest'へコンテンツをコピーしています。ここで 'ss'の役割は何ですか? –