我正在将流中的一些数据复制到字符串中,因此我考虑使用实际字符数加一作为终止字符来调整字符串大小,如下所示:
std::istringstream stream { "data" };
const std::size_t count = 4;
std::string copy;
copy.resize(count + 1);
stream.read(©[0], count);
copy[count] = 0;
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,copy表示它的大小为5(自从我调用以来,这是一致的resize(5))。这是否意味着resize()会添加额外的终止字符本身?这意味着我不必担心\0在调用后追加read(&data[0], count)?
不,你不必。本string类文摘“空值终止的字符序列”的概念,让你不必关于担心了。
另外,返回的字符串的大小不包括终止符,这与我提到的行为是一致的,因为如果您不必处理终止符,您就不必知道它。您的字符串只是您要操作的字符,而不必担心与您的实际数据无关的“实用程序”字符。