为什么我不能唱一个字符串?

时间:2011-06-12 08:40:55

标签: c++ string cout

为什么我不能cout string这样:

string text ;
text = WordList[i].substr(0,20) ;
cout << "String is  : " << text << endl ;

当我这样做时,我收到以下错误:

  

错误2错误C2679:二进制'&lt;&lt;' :找不到哪个运算符采用'std :: string'类型的右手操作数(或者没有可接受的转换)c:\ users \ mollasadra \ documents \ visual studio 2008 \ projects \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **

令人惊讶的是,即使这样也行不通:

string text ;
text = "hello"  ;
cout << "String is  : " << text << endl ;

7 个答案:

答案 0 :(得分:222)

您需要包含

#include <string>
#include <iostream>

答案 1 :(得分:11)

你需要以某种方式引用cout的命名空间std。例如,插入

using std::cout;
using std::endl;

在函数定义或文件之上。

答案 2 :(得分:6)

您的代码存在一些问题:

  1. WordList未在任何地方定义。您应该在使用它之前定义它。
  2. 你不能只在这样的函数之外编写代码。你需要把它放在一个函数中。
  3. 在使用#include <string>cout之前,您需要endl才能使用字符串类和iostream。
  4. stringcoutendl位于std命名空间中,因此除非您使用std::,否则无法使用using作为前缀,无法访问它们{1}}指令首先将它们纳入范围。

答案 3 :(得分:1)

以上答案很好,但如果您不想添加字符串include,可以使用以下

ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();

return os;
}

答案 4 :(得分:0)

使用c_str()将std :: string转换为const char *。

cout << "String is  : " << text.c_str() << endl ;

答案 5 :(得分:-1)

您无需明确引用std::coutstd::endl 它们都包含在namespace std中。 using namespace std而不是使用范围解析运算符::每次制作都更容易和更清洁。

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

答案 6 :(得分:-2)

如果您使用的是Linux系统,则需要添加

rules = ( Rule(LinkExtractor(allow=('/store/apps')),callback="parse_item"), Rule(LinkExtractor(allow=('/store/apps/details\?')),callback="parse_item") )

标题下方

如果是Windows,请确保正确放置标题 using namespace std;

#include<iostream.h>

请参阅此内容。

#include<string.h>