4

プログラムは一連の文字列 (名前と 8 文字の単語) をユーザーに要求し、名前、単語の最初と最後の 3 文字を出力し、単語を逆順に出力します。文字列を逆向きに表示するには、for ループのヘルプが必要です。

    #include <iostream> 

int main () { 


string FirstName; 

string LastName; 

string MiddleName; 

string Names; 

string string1; 

int len; 

int x;  

 cout << "Hello. What is your first name?" << endl; 

 cin >> FirstName; 

 cout << FirstName  << ", what is your last name?" << endl; 

 cin >> LastName; 

 cout << "And your middle name?" << endl; 

 cin >> MiddleName; 

 Names = LastName + ", " + FirstName + ", " + MiddleName; 

 cout << Names << endl; 

 cout << "Please enter a word with 8 or more characters (no spaces): " << endl; 

 cin >> string1; 

 len = string1.length(); 

   if (len < 8){
     cout << "Error. Please enter a word with 8 or more characters and no spaces: " <<    endl; 

     cin >> string1; 
 }

  else if (len >= 8){

     cout << "The word you entered has " << string1.length() << " characters."<<endl; 

 cout << "The first three characters are " << string1.substr(0,3) << endl; 

 cout << "The last three characters are " <<string1.substr(string1.length()-3,3) << endl; 

x = string1.length()-1; 

for (x = string1.length()-1; x >=0; x--){
 cout << "Your word backwards: " << string1[x]; 
}
}



return 0; 
} 
4

4 に答える 4

5

あなたはほとんどそこにいました:

cout << "Your word backwards: ";
for (x = string1.length()-1; x >=0; x--){
   cout << string1[x]; 
}

このようにして、ループは各文字をstring1逆の順序で出力し、テキスト"Your word backwards: "は一度だけ出力します。

于 2012-11-01T21:30:00.517 に答える
1

あなたが空想になりたいなら:

copy(string1.rbegin(), string1.rend(), ostream_iterator<char>(cout));
于 2012-11-01T21:36:51.707 に答える
0

これはおそらくあなたの質問に対する答えではありませんが、私は次のいずれかをしたいと思います:

std::cout << "Your word backwards: "
          << std::string(string1.rbegin(), string1.rend()) << '\n';

*std::copy(string1.rbegin(), string1.rend(),
           std::ostreambuf_iterator<char>(std::cout << "Your word backwards: "))++ = '\n';

std::reverse(string1.begin(), string1.end());
std::cout << "Your word backwards: " << string1 << '\n';
于 2012-11-01T21:37:00.583 に答える
0

簡単な方法は、文字列を逆方向から一時配列に格納し、この一時配列を使用して逆方向の文字列を出力することです。例:- temp[j--]=str[i ++] ; ループで。ただし、この前に注意してください。配列「temp」のサイズを元の配列のサイズに初期化してください。この場合は「str」です。

于 2012-11-01T21:33:24.057 に答える