msdn上的一段示例代码,为什么运行结果和msdn不一样? msdn上的是在什么环境下运行的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道为什么好象前一个没有填充就不行,可能前一个resize(10)时它填充了一些0变成字符串尾了。如果你将前一个resize(10)改为:resize(10,' ')填充一些空格就可以了。 这是msdn上的示例啊,是微软又错了,还是我错了? msdn上的示例有说明文件吗,我看代码太吃力请关注我的贴子:http://www.csdn.net/expert/TopicView.asp?id=248639 // Compile options needed: /GX 很简单了,例子不对。错不在最后一个,而不在倒数第二个:把TestString.resize(10);改为TestString.resize(10,' ');试试,就行了。 这个问题MSDN的确是错了,错就错在它是用cout来显示的。因为cout一遇到'\0'时就会结束输出。当执行TestString.resize(5)再执行TestString.resize(10)时,这时后面的5个字符都初始化为'\0'了。接着再TestString.resize(15,'6')时,最后的5个字符初如化为'6',但是当用cout输出时,它一遇到第6个字符为'\0'时就结束输出了。下面给出相应程序,再看看它的结果你就知了!int main(int argc, char* argv[]){ const char *p; string TestString = "1111122222333334444455555"; cout << TestString << "\n size: " << TestString.size() << endl; TestString.resize(5); cout << TestString << "\n size: " << TestString.size() << endl; TestString.resize(10); cout << TestString << "\n size: " << TestString.size() << endl; TestString.resize(15,'6'); cout << TestString << "\n size: " << TestString.size() << endl; p=TestString.data(); cout<<endl; for(int i=0; i<15; i++) { if(*p=='\0')printf("NULL\n"); printf("%c",*p); p++; } cout<<endl; p=TestString.data(); for(int j=0; j<15; j++) { printf("%c",*p); p++; } cout<<endl; return 0;} 看一下它的结果。是不是证实了我所说的! 你应该感到高兴!你可以E-Mail骂Microsoft了! to tryibest:那什么环境下是对的呢? smtp邮件发送客户端c++ 聊聊 苹果 讨论一下win32子系统 如何用JMAIL发送一封邮件?? 请问回调函数可否是成员函数 如何改变窗口的图标? 在vc中如何将单字节转换成双字节 真的没人会吗?1 0 0 分求解WORD文档属性问题! 请问如何求一个空间盒子与一条线段的交点 为什么调用opencv函数运行变慢 一个关于CComboBoxEx的创建的简单问题? 怎么使用internetsetcookie()?给个完整的例子!50分送了
请关注我的贴子:http://www.csdn.net/expert/TopicView.asp?id=248639
把TestString.resize(10);
改为TestString.resize(10,' ');
试试,就行了。
当执行TestString.resize(5)再执行TestString.resize(10)时,这时后面的5个字符都初始化为'\0'了。接着再TestString.resize(15,'6')时,最后的5个字符初如化为'6',但是当用cout输出时,它一遇到第6个字符为'\0'时就结束输出了。下面给出相应程序,再看看它的结果你就知了!int main(int argc, char* argv[])
{
const char *p;
string TestString = "1111122222333334444455555";
cout << TestString << "\n size: " << TestString.size() << endl;
TestString.resize(5);
cout << TestString << "\n size: " << TestString.size() << endl;
TestString.resize(10);
cout << TestString << "\n size: " << TestString.size() << endl;
TestString.resize(15,'6');
cout << TestString << "\n size: " << TestString.size() << endl;
p=TestString.data();
cout<<endl;
for(int i=0; i<15; i++)
{
if(*p=='\0')printf("NULL\n");
printf("%c",*p);
p++;
}
cout<<endl; p=TestString.data();
for(int j=0; j<15; j++)
{
printf("%c",*p);
p++;
}
cout<<endl;
return 0;} 看一下它的结果。是不是证实了我所说的!
那什么环境下是对的呢?