假设:

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/

10-11 16:05