我有一个已知大小的char数组(比如10),我想将它转换为strng。重点是数组不是NULL终止,因此不能使用以下示例代码中使用的这种技术。
char arr[ ] = "This is a test";
string str(arr);
我可以这样做:
char * array=getArray();
string output;
for(int I=0;i<10;i++)
{
output.append(array[I]);
}
甚至更好的是:
char * array=getArray();
string output;
output.append(10,array);
但有没有更好的方法呢?
答案 0 :(得分:6)
如果你没有以null结尾的字符串,但是你知道它的长度,你可以使用两个迭代器构造函数:
string str(arr, arr + len);
或适当的计数构造函数:
string str(arr, len);
答案 1 :(得分:3)
首先,"This is a test"
是 NIL
- 终止并且第一个样本正常工作 - 编译器隐式存储字符串文字,终止为零。
如果你的数组真的不是NIL
- 终止,第三种方法会很好,而第二种方法效率很低,因为它会逐段追加。 std::string
还有一个带有计数的构造函数:std::string(array, 10)
。