假设:
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的末尾.有谁知道为什么?
我的猜测是:
您没有指定要调整大小的值,因此在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, ' ')改为打电话.