0

わかりましたので、これは私が持っているものですが、「complexReverseString」というエラーが表示されます:識別子が見つかりません??? 私はどこで間違っているのですか

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    ifstream input;
    string forward;

    cout << "Please enter a string to see its reverse. (Will display reverse twice)" << endl;
    input.open("information.txt");
    cin >> forward;
    //reverseString(forward, findStringSize(forward)); a function I'm not actually calling
    input >> forward;
    complexReverseString();

    input.close();


}
int complexReverseString(string userInput)
{
    string source(userInput);
    string target( source.rbegin(), source.rend() );
    cout << "The reversed string is " << target << endl;

    return 0;
}
4

4 に答える 4

4

complexReverseString()呼び出す前に、まずプロトタイプを作成する必要があります。

main次のように、エントリポイントの前にソースファイルで実行します。

int complexReverseString(string userInput);
int main() { ... }

または別のヘッダーでそれを行います:

#ifndef COMPLEX_STR_HPP
#define COMPLEX_STR_HPP

int complexReverseString(string userInput);

#endif /* COMPLEX_STR_HPP */

/* int main.cpp */
#include "complex_str.hpp"

int main() { ... }

次に、関数にパラメーターを渡すのを忘れました。

 complexReverseString( /* parameter here */ );

 e.g
 complexReverseString(forward);

第三に、文字列を変更していないので、文字列と、おそらく文字列への参照をcomplexReverseString()取得することをお勧めします。const

int complexReverseString(const string& userInput);
于 2012-04-23T02:41:27.643 に答える
2

C/C++ では、コンパイラはソース コードを上から下に読み取ります。コンパイラがメソッドを読み取る前にメソッドを使用すると (たとえば、メソッドが下部に定義されていて、それを使用していmain()main()上部にある場合)、コンパイラはプロジェクト内のすべてのソース/ヘッダー ファイルを実行しません。 /folder メソッドが見つかるまで、またはすべてのファイルを通過するまで。

必要なことは、メソッドのプロトタイプを作成するか、最初に定義することです。

関数プロトタイプは基本的にメソッド ヘッダーであり、メソッドがソース内の別の場所にあることをコンパイラに通知するために使用されます。

プロトタイプ:

#include <iostream>    
#include <fstream>    
#include <string>

using namespace std;

// DEFINE PROTOTYPES BEFORE IT'S CALLED (before main())
int complexReverseString(string);

int main()    
{    
    // your main code
}    

int complexReverseString(string userInput)    
{    
    // your reverse string code
}

プロトタイプを作成すると、メソッドとメソッド ヘッダーをより簡単に確認できます。

または上部に定義compledReverseString()します:

#include <iostream>    
#include <fstream>    
#include <string>

using namespace std;

// DEFINE METHOD BEFORE IT'S CALLED (before main())
int complexReverseString(string userInput)    
{    
    // your reverse string code
}

int main()    
{    
    // your main code
}

これらのスタイルのどちらを使用しても同じ結果が得られるため、どちらを使用するかはユーザー次第です。

これとは別にcomplexReverseString()、 main を呼び出したときに、そのパラメーターを渡すのを忘れていましたforward。の代わりにcomplexReverseString()、それはcomplexReverseString(forward)

于 2012-04-23T03:08:00.297 に答える
2

パラメータをメソッドに渡す必要がありますか? あなたのメソッドはタイプのパラメータを期待しているので、stringそれ以外の場合はそれをオーバーロードする必要があります..現在、関数定義を探しているので失敗していますcomplexReverseString()

コードを次のように変更します

complexReverseString(forward);
于 2012-04-23T02:41:36.360 に答える
2

C++ で明示的なループを使用せずに文字列またはその他のコンテナーを逆にする最も簡単な方法は、逆反復子を使用することです。

string input;
cin >> input;
// Here is the "magic" line:
// the pair of iterators rbegin/rend represent a reversed string
string output(input.rbegin(), input.rend());
cout << output << endl;
于 2012-04-23T02:46:26.440 に答える