我有一个固定长度的字符数组,我想分配给一个字符串。如果字符数组已满,则会出现问题,分配失败。我想过在你可以提供的地方使用assign,n
但是忽略\0
s。例如:
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
对于这两种情况,如何正确地将固定长度的字符数组分配给字符串?