基本上,我已经设法写了这个,我设法扭转了一个单词!但是当我尝试反转包含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 :(得分:2)
问题不在于char数组vs std :: string - 它与输入法有关。
将cin>>words
更改为cin.getline(words, sizeof(words), '\n');
我猜这个任务是一个习惯于数组的赋值,所以坚持使用char数组 - 否则,是的,std :: string是易于使用的方法。
答案 1 :(得分:1)
您可以使用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());
答案 2 :(得分:0)
使用cin.getline(words,99)
代替cin>>words
,因为cin&gt;&gt;字词只会将char数组放到第一个空格区域。