给定一个字符串S作为输入。我必须对给定的字符串进行反转。
输入。输入的第一行包含一个整数T,表示测试用例的数量。T测试用例如下,每个测试用例的第一行包含一个字符串S。
输出:对应每个测试用例,输出一个字符串S。对应于每个测试用例,按相反的顺序打印出字符串S
为什么我的代码没有任何输出?
#include <iostream>
#include<string>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
string s;
int j=0;
string res;
cin>>s;
int l=s.length();
for(int i=l-1;i>=0;i--)
{
res[j]=s[i];
j++;
}
cout<<res<<endl;
}
return 0;
}
输入:
1
宅男
输出。
std::string
是不会自动调整大小的,这也是为什么 res[j]=...
不起作用。
要解决这个问题,你可以
res[j]=...
与 res.push_back(...)
string res;
与 string res(s.size(), '\0');
同时注意,在生产中最好能做到。
string res = s;
std::reverse(s.begin(), s.end());
UPDATE. 正如@Blastfurnace所指出的,一个更好的版本是:
std::string res(s.rbegin(), s.rend());