关于字符串的反向输出问题
#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来直接构建反序的新串