假设:
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());
并且以下显示“ This is 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, ' ')
。关于c++ - 字符串运算符+ =有时在string::resize()之后不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11251063/