2012-04-23 5 views
0

okこれは私が持っているものですが、私は 'complexReverseString'というエラーが表示されています:識別子が見つかりません???私はあなたがそれを呼び出す前に、まず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; 
} 
+2

あなたの質問には**これは言語**でタグ付けしてください。 – deceze

+1

ループが見えない場合は、ループがないことを意味するものではありません。 –

+1

@KcNorth:コンパイルエラーを理解することは、コンパイルされた言語を学ぶ上で不可欠な部分です。あなたが今日投稿した質問の残りの部分を見ると、間違いなくあなたは[良いC++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and)を読むべき時です-リスト)。 StackOverflowコミュニティは、あなたに言語やプログラム方法を教えることはできません。このサイトの仕組みではありません。ごめんなさい! – Johnsyweb

答えて

4

にそれを上に見て、間違った場所をつもりです。

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() { ... } 

第二に、あなたはパラメータを渡すのを忘れて、このようなmainエントリ・ポイントが前に

どちらかは、ソースファイルでそれを行います

complexReverseString(/* parameter here */); 

e.g 
complexReverseString(forward); 

第3に、文字列を変更していないためcomplexReverseString()に私はconst文字列を取ることを提案し、文字列をおそらく参照:

int complexReverseString(const string& userInput); 
+0

FYI、http://stackoverflow.com/questions/2575153/must-declare-function-prototype-in​​-c – Baz1nga

+1

@ Baz1nga FYI、試作は良い方法です。現代のコードでは常に使わなければなりません。 – ApprenticeHacker

+0

もう一度知っておいてください。しかし、ここの問題は何か他のものでした。あなたはメインの問題を解決するための答えを更新しました。 – Baz1nga

2

あなたはメソッドにパラメータを渡す必要がありますか?あなたの方法は、タイプstringのパラメータを期待するとして、他のあなたは

complexReverseString(forward); 
2

最も簡単な方法をあなたのコードが反転する関数定義complexReverseString()

変更を探しているそれは、現在、cosを失敗します。..それをオーバーロードする必要があります

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; 
2

C/C++では、コンパイラは、上から下にソースコードを読み取る:C++での明示的なループ無しストリングまたは任意の他の容器は、逆反復子を使用することです。メソッドがコンパイラに読み込まれる前にメソッドを使用している場合(たとえば、メソッドが一番下に定義されていて、main()main()にあるメソッドを使用している場合)、コンパイラはすべてのソース/ヘッダファイルを実行しません。メソッドが見つかるか、すべてのファイルを調べるまで、プロジェクト/フォルダを開きます。

あなたがする必要があるのは、あなたの方法をプロトタイプ化するか、上にそれを定義することです。

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

プロトタイプ:

#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()を呼び出したときは、そのパラメータを渡すのを忘れました。これはforwardである必要があります。だからcomplexReverseString()の代わりに、complexReverseString(forward)

+0

甘いことは知りませんポストはこれまで遠くに行きましたあなたのスピーディな応答のすべてに感謝この光景は最高です私はすべての助けに感謝します –