我有这两组字符数组:
char t1[]={'1','2','\0','\0'};
char t2[]={'1','2','3','4'};
我想编写一个函数将它们转换为字符串,但 t1 的字符串大小应为 2,t2 的字符串大小应为 4。
string convert(char * data)
{
return string(data);
}
在 t1 上表现不错,但在 t2 上崩溃(t2 不是空终止)。
string convert(char * data)
{
return string(data,data+4);
}
对 t2 做的很好,但是为 t1 生成的字符串的大小是 4 而不是 2。
编写简单快速的函数以正确执行此操作的最佳方法是什么?
最佳答案
您可以通过引用获取数组。如果您只对大小为 4 的数组感兴趣:
std::string convert(char const(&data)[4])
{
return std::string(data, std::find(data, data + 4, '\0'));
}
如果你想要更通用的东西,你可以把它做成模板:
template<size_t N>
std::string convert(char const(&data)[N])
{
return std::string(data, std::find(data, data + N, '\0'));
}
关于c++ - 如何在 C++ 中正确地将 char 数组转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380695/