2013-06-02 93 views
0

我只是在學習C++的基礎知識,而且我遇到了cout的一些問題。我寫了幾個簡單的測試來打印hello world,一個簡單的加法器函數,以及一個用於翻轉字符串順序的函數。一切運行良好,除了我的字符串函數,給我這個錯誤。會喜歡解釋,謝謝。C++ cout操作數錯誤,輸入錯誤ostream,字符串

錯誤:沒有運營商 「< <」 這些操作數相匹配,操作數類型是STD:ostream的< < STD:字符串

#include <iostream> 

using namespace std; 

int adder(int a, int b) 
{ 
    return a + b; 
} 

int addOneToInput(int a) 
{ 
return a + 1; 
} 

string flipStringOrder(string s) 
{ 
string temp = ""; 
for (int i = 0; i < s.length; i ++) 
{ 
    char charTemp = (s.at(s.length() - i -1)); 
    temp += charTemp; 
} 
return temp; 
} 


void main(){ 
cout << "Hello World" << endl; 
int x = 5; 
int y = 3; 
cout << adder(x, y) << endl; 
cout << flipStringOrder("moon") << endl; 
cin.get(); 
} 
+2

你似乎並沒有把執行#included ... –

+0

'無效main'是不是一個合法的簽名。 – chris

回答

3

你忘了:

#include <string> 

你永遠不應該依賴通過包含其他頭文件間接包含相關的標準頭文件。

而且,改變main()簽名成一個法律問題,例如:

int main() 
{ 
    // ... 
} 
+0

O,這樣做,謝謝。你是指將主要簽名改爲合法簽名?我不能使用void,即使沒有返回任何東西。我有點習慣了java的public static void main,使用int有什麼好處? –

+0

另外,是否有任何原因主要評估,如果它是一個int?我必須打電話給main才能啓動程序嗎? –

+0

@ user2426318:'void main()'不是合法的簽名,而'int main()'是。你可以在'main()'中沒有'return'語句,這相當於'return 0'(表示成功)。任何與「0」不同的值都表示失敗。 –