将char数组(没有null终止)转换为字符串的最佳方法是什么?

时间:2014-08-27 16:22:13

标签: c++ stl

我有一个已知大小的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);

但有没有更好的方法呢?

2 个答案:

答案 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)