读书人

cout输出字符串是不是遇 #039;\0#039; 就停止输

发布时间: 2012-04-19 14:36:43 作者: rapoo

cout输出字符串是不是遇 '\0' 就停止输出?
大牛们帮忙看看这代码:
#include <iostream>
#include <string>

using namespace std;

int main()
{
string s; //char s[255];
cin>>s;
s[4]='\0';
cout<<s<<endl;
system("pause");
return 0;
}

输入:asdfghjk
输出:asdf hjk

把string s;换成 char s[255];的话,就只输出前四个字符 asdf

求大牛解释怎么回事?

[解决办法]
#include <iostream>
#include <string>

using namespace std;

int main()
{
int i;
char s[255];
std::cin>>s;
for(i=0;i<254;i++)
{
if(s[i]=='\0')
{
break;
}
}
for(;i<254;i++)
{
s[i]='\0';
}
s[4]='\0';
for(i=0;i<255;i++)
{
std::cout<<s[i];
}
std::cout<<std::endl;
system("pause");
return 0;
}
[解决办法]
如果想中途截断,写入'\0'后可以cout<<s.c_str()<<endl;
[解决办法]

探讨
引用:
引用:
引用:
效果一样,你再试一下下面的代码:

C/C++ code
#include <iostream>
#include <string>
using namespace std;

int main ()
{
string……

[解决办法]
从可移植的角度看,4楼的代码可以解决跨便宜平台的问题

读书人网 >C++

热点推荐