0

假设:

std::string ToShow,NumStr;

以下显示“这是 19 ch00”:

ToShow = "This is nineteen ch";
ToShow.resize(ToShow.length()+0);
NumStr = "00";
ToShow += NumStr;
mvaddstr(15,0,ToShow.c_str());

以下显示“这是 19 ch”:

ToShow = "This is nineteen ch";
ToShow.resize(ToShow.length()+1);
NumStr = "0";
ToShow += NumStr;
mvaddstr(16,0,ToShow.c_str());

在第二种情况下,operator+= 没有将字符串“0”添加到 ToShow 的末尾。有谁知道为什么?

4

1 回答 1

6

我的猜测是:

您没有指定要调整大小的值,因此在ToShow.Resize(ToShow.length()+1)您的字符串如下所示之后:

"This is nineteen ch\0"

之后+= NumStr

"This is nineteen ch\00"

在调用 c_str 之后,它被修剪为第一个\0,看起来像:

"This is nineteen ch"

(C 字符串以 null 结尾,std::strings 不是)

试着打电话.resize(someLength, ' ')

于 2012-06-28T18:55:13.560 回答