2013-02-17 72 views
0

我有一個矢量<char>用零字符串

vector<char> sectionData; 

,我想看看它的content.I嘗試以下

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

但我只得到sectionData的部分所呈現的字符串,因爲sectionData包含零。我可以做什麼,如果有的話我想要讀取整個數據到字符串?

我不能老是使用std ::法院 感謝

+3

*你正在*複製整個字符串。你只是不能以有意義的方式打印*。如果你只是'std :: cout << sectionDataStr'你應該事實上得到一切。 – 2013-02-17 11:49:37

+0

您*成功*複製了整個字符串。嘗試'fwrite(sectionDataStr.c_str(),1,sectionDataStr.size(),stdout);' – phoeagon 2013-02-17 11:55:57

回答

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); 
0

你的問題是不是與字符串,但與輸出。根據您使用的內容,輸出例程可能會停止在字符串的前0位。如果你不想這樣做,那麼你可能需要使用類似的東西來轉換輸出的緩衝區:

std::replace(sectionData.begin(), sectionData.end(), '\0', ' ')