![](/img/trans.png)
[英]How to convert std::vector<unsigned char> to vector<char> without copying?
[英]Copying std::vector<char> into dynamic char array adds unexpected characters
我正在制作將char []轉換為std :: vector的函數(是正確的動詞嗎?),反之亦然。 t_main中的代碼是我正在運行的測試,以查看功能是否正常運行。
typedef std::vector<char> string_t;
static string_t CharArrayToVector(const char string[])
{
string_t vectorString;
for (int i = 0; string[i] != NULL; ++i)
vectorString.push_back(string[i]);
return vectorString;
}
static char* VectorToCharArray(string_t string)
{
char *new_string = new char[string.size()];
for (int i = 0; i < string.size(); i++)
new_string[i] = string.at(i);
return new_string;
}
主要功能:
int _tmain(int argc, _TCHAR* argv[])
{
cout << VectorToCharArray(CharArrayToVector("hello world!1"));
int x;
cin >> x;
return 0;
}
下面的代碼先打印“ hello world!1”,然后打印一堆字符。
每次運行時,這些字符都是相同的(4個下標2s,8 1/2個符號,然后是三組不透明的矩形,然后是歐元符號,最后是另一個矩形),即使我更改了要打印的內容,它們也保持不變。 調試顯示在初始化數組時添加了額外的字符(char * new_string = new char [string.size()];)
是什么原因導致這些多余的字符,該如何解決? 謝謝。
您需要在char *
后面附加一個'\\0'
字符。 另外,不要忘記為該額外字符分配足夠的空間。
但是,為什么要這樣做? 此功能已內置在std :: string中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.