c++字符串来连接后的返回值问题
发表于 : 2008-09-16 17:09
/*
我知道好多教科书上说的都是在c++中两个字符串比如s1,s2连接即s1+s2的返回值为指向s1首字符的指针,且s1为原来添加上s2的结果(好像这也是c++标准),可是我在ubuntu下用gcc编译下面的程序结果不是这样的,怎么回事阿?哪位解释下,gcc不是比vc还标准吗?!
*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string a,s1="Hello ";
string s2="123";
a=s1;
cout<<((a==s1)?"":"not ")<<"equel"<<endl;
cout<<a+s2<<endl;
cout<<"before:"<<a<<endl;//主要就是这里要解释!
reverse(a.begin(),a.end());
cout<<a<<endl;
cout<<a.replace(0,9,9,'c')<<endl;
cout<<((s1.find("ell")!=-1)?"":"not ")<<"equel"<<endl;
cout<<((s1.find('c')!=-1)?"":"not ")<<"equel"<<endl;
return 0;
}
输出的结果:
equel
Hello 123
before:Hello //这里!!
olleH//当然还这里!
ccccccccc
equel
not equel
我知道好多教科书上说的都是在c++中两个字符串比如s1,s2连接即s1+s2的返回值为指向s1首字符的指针,且s1为原来添加上s2的结果(好像这也是c++标准),可是我在ubuntu下用gcc编译下面的程序结果不是这样的,怎么回事阿?哪位解释下,gcc不是比vc还标准吗?!
*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string a,s1="Hello ";
string s2="123";
a=s1;
cout<<((a==s1)?"":"not ")<<"equel"<<endl;
cout<<a+s2<<endl;
cout<<"before:"<<a<<endl;//主要就是这里要解释!
reverse(a.begin(),a.end());
cout<<a<<endl;
cout<<a.replace(0,9,9,'c')<<endl;
cout<<((s1.find("ell")!=-1)?"":"not ")<<"equel"<<endl;
cout<<((s1.find('c')!=-1)?"":"not ")<<"equel"<<endl;
return 0;
}
输出的结果:
equel
Hello 123
before:Hello //这里!!
olleH//当然还这里!
ccccccccc
equel
not equel