我正在将函数转换(是正确的动词吗?)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()];)
是什么导致这些额外的角色,我该如何解决?感谢。
答案 0 :(得分:5)
您需要在'\0'
附加char *
个字符。另外,不要忘记为额外的角色分配足够的空间。
但你为什么要这样做?此功能已内置于std :: string。