2013-06-02 91 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”不同的值都表示失败。 –