文字列に割り当てたい固定長の文字配列があります。文字配列がいっぱいの場合に問題が発生し、割り当てが失敗します。n
ただし、sを無視して指定できるところで代入を使用することを考え\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
どちらの場合も、固定長の文字配列を文字列に正しく割り当てるにはどうすればよいですか?