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;
[解决办法]