c++ - 将固定长度的字符数组分配给字符串

标签 c++ string

我有一个固定长度的字符数组,我想分配给一个字符串。如果字符数组已满,问题就来了,分配失败。我想过在可以提供 n 的地方使用赋值,但这会忽略 \0。例如:

std::string str;
char test1[4] = {'T', 'e', 's', 't'};
str.assign(test1);    // BAD "Test2" (or some random extra characters)
str.assign(test1, 4); // GOOD "Test"
size_t len = strlen(test1); // BAD 5

char test2[4] = {'T', 'e', '\0', 't'};
str.assign(test2);    // GOOD "Te"
str.assign(test2, 4); // BAD "Tet"
size_t len = strlen(test2); // GOOD 2

对于这两种情况,如何将固定长度的字符数组正确分配给字符串?

最佳答案

使用“迭代器对”形式的赋值。

str.assign(test1, std::find(test1, test1 + 4, '\0'));

关于c++ - 将固定长度的字符数组分配给字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934746/

相关文章:

asp.net - 字符串比较中使用哪些文化信息?

swift - 如何在 Swift 中删除字符串中的重复字符

java - 有没有办法从用户输入中获取多行文本?

c#比较字符串的最快方法

c++ - 条件变量会解锁它们的互斥量吗?

c++ - 比较 double 和 int,无需转换或转换

string - 在 Swift 中附加字符以形成字符串的最快、最精简的方法

C++ 库 "internal use only"编码风格

c++ - 简单的 C++ 正则表达式在 OSX 中出现运行时错误,但在 Windows 中

c++ - AVX/SSE 回合向下 float 并返回整数 vector ?