我有一個矢量<char>用零字符串
vector<char> sectionData;
,我想看看它的content.I嘗試以下
string sectionDataStr = string(sectionData.begin(),sectionData.end());
但我只得到sectionData的部分所呈現的字符串,因爲sectionData包含零。我可以做什麼,如果有的話我想要讀取整個數據到字符串?
我不能老是使用std ::法院 感謝
我有一個矢量<char>用零字符串
vector<char> sectionData;
,我想看看它的content.I嘗試以下
string sectionDataStr = string(sectionData.begin(),sectionData.end());
但我只得到sectionData的部分所呈現的字符串,因爲sectionData包含零。我可以做什麼,如果有的話我想要讀取整個數據到字符串?
我不能老是使用std ::法院 感謝
您的問題不存在。這裏有一個簡單的例子:
#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);
你的問題是不是與字符串,但與輸出。根據您使用的內容,輸出例程可能會停止在字符串的前0位。如果你不想這樣做,那麼你可能需要使用類似的東西來轉換輸出的緩衝區:
std::replace(sectionData.begin(), sectionData.end(), '\0', ' ')
*你正在*複製整個字符串。你只是不能以有意義的方式打印*。如果你只是'std :: cout << sectionDataStr'你應該事實上得到一切。 – 2013-02-17 11:49:37
您*成功*複製了整個字符串。嘗試'fwrite(sectionDataStr.c_str(),1,sectionDataStr.size(),stdout);' – phoeagon 2013-02-17 11:55:57