假设:
std::string ToShow,NumStr;
以下显示“This is 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的末尾。有谁知道为什么?
答案 0 :(得分: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字符串以空值终止,std :: strings不是)
请尝试拨打.resize(someLength, ' ')
。