我要反转一个字符串,但我的代码没有产生任何输出 - C++。

问题描述 投票:-1回答:1

给定一个字符串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

宅男

输出。

c++ string reverse
1个回答
3
投票

std::string 是不会自动调整大小的,这也是为什么 res[j]=... 不起作用。

要解决这个问题,你可以

  • 替换 res[j]=...res.push_back(...)
  • 事先指定字符串的大小,例如:replace 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());
© www.soinside.com 2019 - 2024. All rights reserved.