首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于字符串的反向输出有关问题

2012-03-19 
关于字符串的反向输出问题#include iostream#includestringusingnamespacestdstringreverseString(st

关于字符串的反向输出问题
#include <iostream>
#include   <string>
using   namespace   std;

string   reverseString(string   s);
void   main()
{
string   str;
cout < < "Enter   a   string: " < <endl;
cin> > str;
cout < <str < < "的反向字符串是 " < <reverseString(str) < <endl;
}
string   reverseString(string   s)
{
if(s.length()==1)
return   s;
else
{
char   c=s[s.length()-1];
cout < <c;
return   reverseString(s.substr(0,s.length()-1));

}
}


为什么执行结果如下
Enter   a   string:
xupf
fpuxupf的反向字符串是x


xupf的反向字符串应该为fpux,可是执行时fpu跑到了xupf的前面,尔真正要输出的位置只输出了x,错在哪里了????????????

[解决办法]
...你这句里面cout < <str < <endl < < "的反向字符串是 " < <reverseString(str) < <endl;加个endl........这样就没有问题了
[解决办法]
这个跟cout缓冲有关把,并不是写cout < <str就马上输出字符串的,,.好象是先存起来的...
如果是cout < <str < <endl;就马上得输出了,因为endl里面有flush,,,就是强制输出......
[解决办法]
你既然要用string为什么不用逆向跌代器呢?这样更简洁一些
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

void main()
{
string str;
string str2;
cout < < "Enter a string: " < <endl;
cin> > str;
copy(str.rbegin(), str.rend(),
back_insert_iterator <string> (str2));
cout < <str2;
}


[解决办法]
stl的reverse也是现成的呀。
也可以直接用reverse_iterator来直接构建反序的新串

热点排行