0

基本的に、私はこれを書くことができました.1つの単語を逆にすることができました! しかし、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;
 }
4

3 に答える 3

2

問題は char 配列と std::string ではなく、入力メソッドにあります。

cin>>wordsに変更cin.getline(words, sizeof(words), '\n');

このタスクは配列に慣れるための割り当てであると推測しているので、char 配列に固執します。それ以外の場合は、std::string を使いやすくする方法です。

于 2012-12-04T08:43:43.033 に答える
1

C char 配列の代わりに使用することstd::stringもできます。また、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());
于 2012-12-04T08:38:46.080 に答える
0

cin>>words は char 配列を最初の空白までしか取得しないため、cin.getline(words,99)insted of を使用します。cin>>words

于 2012-12-04T09:02:17.467 に答える