簡體   English   中英

復制std :: vector <char> 到動態字符數組中會添加意外字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM