Мне нужно перевернуть строку, но мой код не производит никакого вывода - C ++ - PullRequest
0 голосов
/ 06 мая 2020

Дана строка S в качестве входной. Я должен перевернуть данную строку.

Входные данные: первая строка входных данных содержит единственное целое число T, которое обозначает количество тестовых случаев. Далее следует T тестовых случаев, первая строка каждого тестового примера содержит строку 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

гики

вывод:

1 Ответ

3 голосов
/ 06 мая 2020

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());

ОБНОВЛЕНИЕ. Как указал @Blastfurnace, еще лучшей версией будет:

std::string res(s.rbegin(), s.rend());
...