0

私は

vector<char> sectionData;

その内容を見たいと思います。次のことを試します

string sectionDataStr = string(sectionData.begin(),sectionData.end());

しかし、sectionData にはゼロが含まれているため、文字列に表示される sectionData の一部しか取得できません。データ全体を文字列に読み取りたい場合はどうすればよいですか?

std::cout を使用できません ありがとう

4

2 に答える 2

2

あなたの問題は存在しません。簡単なデモンストレーションを次に示します。

#include <string>
#include <iostream>

int main()
{
    std::cout << std::string { 'a', '\0', 'b', '\0', 'c' } << std::endl;
}

出力を調べます。

$ ./a.out | hexdump -C

00000000  61 00 62 00 63 0a 

##         a \0  b \0  c \n

ご覧のとおり、すべて揃っています。


または(編集後):

#include <cstdio>

std::fwrite(sectionDataStr.data(), sectionDataStr.size(), stdout);
于 2013-02-17T11:53:52.473 に答える
0

問題は文字列ではなく、出力にあります。使用するものによっては、出力ルーチンが文字列の最初の0で停止する場合があります。それが望ましくない場合は、次のようなものを使用して、出力用にバッファを変換する必要があります。

std::replace( sectionData.begin(), sectionData.end(), '\0', ' ' ) 
于 2013-02-17T12:34:21.823 に答える