2017-02-11 14 views
1

私の文字列を印刷するように見えることはできません:だから、これは私のコードの断片であるうち

void reverse(string query, string reverseQuery) { 
     unsigned int i; 

     for(i=0; i<query.length(); i++) { 
      reverseQuery[i] = query[query.length()-1-i]; 
     } 
     cout << reverseQuery << endl; 
     return; 
    } 

のiostream、文字列と名前空間stdを使用するためのヘッダは、コードに含まれていました。私が直面している問題は、文字列reverseQueryを出力しようとすると何も出てこないということです。なぜ誰も知っていますか?ありがとう!

+1

は、スタックオーバーフローを歓迎しています。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –

+1

[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)に時間を割いてください。また、[最小限の、完全で検証可能な例を作成する] (http://stackoverflow.com/help/mcve)。 –

+1

しかし、あなたの問題のヒントとして: 'reverseQuery'の初期サイズは? –

答えて

1

あなたのフラグメントは、次のようになります。

std::string reverse(const string& query) { 
    std::string reverseQuery(query.length(),0); // <<<<< Ensure that the size is the same 
    for(unsigned i=0; i<query.length(); i++) { 
     reverseQuery[i] = query[query.length()-1-i]; 
    } 
    // cout << reverseQuery << endl; 
    return reverseQuery; 
} 

標準C++の文字列とそれを達成する方法短く、慣用的なコードを

std::string reverseQuery(query); 
std::reverse(std::begin(reverseQuery),std::end(reverseQuery)); 
+0

そして、その 'cout'行を取り除く。必要であればコールサイトで行いますが、 'reverse'という関数はSTDOUTに何も出力していません。実際には、参照による引数はなぜですか?結果を返すだけです。 –

+0

@Lighnessその助言はOPに行くのですか、それとも本当に私にアドレッシングしましたか?私の答えを編集しました。 –

+0

私はそう思っています。 –

関連する問題