-2

入力文字列を逆にするコードでさまざまなエラーが発生する理由を教えてください。

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
void ReverseString(string &aString);
int main(){
    string info;
    cout << "What's your string?" << endl;
    getline(cin, info);
    ReverseString(info);
    cout << ReverseString(string info) << " compare with: " << info << endl;
    system("pause");
    return 0;
}

void ReverseString(string &aString){

for(int i = 0; i < aString.length(); i++)
    {
        string temp = 0; // initialize temporary string
        temp = temp + aString.at(aString.length() - 1 - i); // hold temporary string
        if(i => aString.length()) /*assign temp string to aString when all chars are processed*/
        {
            temp = &aString;
        }

    }

}
4

4 に答える 4

0

論理エラーに加えて、いくつかの構文エラーがあります。

cout << ReverseString(string info) << " compare with: " << info << endl;

ReverseString(string info)ReverseString空の文字列を関数に渡します(コンパイルされた場合でもinfo、同じスコープに 2 があるため、そうすべきではないようです)。あなたが欲しかったのは:

cout << ReverseString(info) << " compare with: " << info << endl;

逆関数では、 に行くだけですlength() / 2

参照渡しであるため、関数内の文字列に加えた変更は、渡したオブジェクトに反映されます。つまり、オリジナルinfoが反転します。コピーを操作する場合は、参照ではなくコピーで渡す必要があります。

最後に、を返すcout << ReverseString(info)ので (コンパイルさえできたとしても) 役に立ちません。(反転した文字列)を返す必要があります。ReverseStringvoidstring

于 2013-11-12T15:47:02.953 に答える