Чтение длины строки, затем обратная / обратная строка

По сути, мне удалось написать это, и мне удалось изменить одно слово! Но когда я пытаюсь перевернуть строку, содержащую 2 или более слов, я не могу получить вывод. Кто-нибудь знает, как решить эту проблему, или, возможно, некоторые советы?

 #include <iostream>

using namespace std;

int main()
{
char words[100];
int x, i;

cout<<"Enter message : ";
cin>>words;

x = strlen(words);
//This two line is used to reverse the string
for(i=x;i>0;i--)
cout<<words[i-1]<<endl;

system("pause");
return 0;
}

0

Решение

Проблема не в массиве char против std :: string, а в методе ввода.

+ Изменить cin>>words в cin.getline(words, sizeof(words), '\n');

Я предполагаю, что эта задача — задание, чтобы привыкнуть к массивам, поэтому придерживайтесь массива char — иначе, да, std :: string — путь для простоты использования.

2

Другие решения

Вы могли бы использовать std::string вместо массива C char также можно использовать string :: reverse_iterator для чтения слов в обратном порядке. Чтобы прочитать несколько слов, разделенных пробелом, вам нужно использовать std :: getline.

std::string words;
std::getline(std::cin, words, '\n'); //if you read multiple words separated by space

for (string::reverse_iterator iter = str.rbegin() ; iter != str.rend(); ++iter)
{
std::cout << *iter;
}

или использовать std::reverse

std::reverse(words.begin(), words.end());
1

использование cin.getline(words,99) поставленный cin>>words потому что cin >> words получит массив char только до первого пробела.

0
По вопросам рекламы [email protected]