По сути, мне удалось написать это, и мне удалось изменить одно слово! Но когда я пытаюсь перевернуть строку, содержащую 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;
}
Проблема не в массиве char против std :: string, а в методе ввода.
+ Изменить cin>>words
в cin.getline(words, sizeof(words), '\n');
Я предполагаю, что эта задача — задание, чтобы привыкнуть к массивам, поэтому придерживайтесь массива char — иначе, да, std :: string — путь для простоты использования.
Вы могли бы использовать 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());
использование cin.getline(words,99)
поставленный cin>>words
потому что cin >> words получит массив char только до первого пробела.