我有一个固定长度的字符数组,想要将其赋值给一个字符串。但是如果字符数组已满,则赋值失败。我考虑使用可以提供n
的assign函数,但是这会忽略\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
对于两种情况,如何正确地将一个固定长度的字符数组分配给一个字符串?
\0
呢? - SingerOfTheFall