我有这两组char数组:
char t1[]={'1','2','\0','\0'};
char t2[]={'1','2','3','4'};
Run Code Online (Sandbox Code Playgroud)
我想编写一个函数将它们转换为字符串,但t1的字符串大小应为2,而t2的字符串大小应为4.
string convert(char * data)
{
return string(data);
}
Run Code Online (Sandbox Code Playgroud)
对t1做得很好,但在t2上崩溃(t2不是空终止).
string convert(char * data)
{
return string(data,data+4);
}
Run Code Online (Sandbox Code Playgroud)
对于t2做得很好,但是t1的生成字符串的大小是4而不是2.
编写简单快速的函数来正确执行此操作的最佳方法是什么?
您可以通过引用获取数组.如果您只对4号数组感兴趣:
std::string convert(char const(&data)[4])
{
return std::string(data, std::find(data, data + 4, '\0'));
}
Run Code Online (Sandbox Code Playgroud)
如果你想要更通用的东西,你可以把它变成一个模板:
template<size_t N>
std::string convert(char const(&data)[N])
{
return std::string(data, std::find(data, data + N, '\0'));
}
Run Code Online (Sandbox Code Playgroud)