这是我正在写的一个非常简单的程序的代码片段。我对C ++很新,但有Java背景,所以我可能对打印值如何工作有先入之见。我的问题是当我这样做时:
cout << "Please enter the weight for edge " << verticies[i] << endl;
我收到一条错误消息,指出操作数与&lt;&lt;的指定运算符不匹配。基本上它是说我不能做cout&lt;&lt; verticies [i]中。
为什么会这样?
以下是代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string verticies[6] = { "AB", "AC", "AD", "BC", "BD", "CD" };
int edges[6];
for (int i = 0; i < 6; i++)
{
cout << "Please enter the weight for edge " << verticies[i] << endl;
}
system("PAUSE");
return 0;
}
答案 0 :(得分:10)
尝试包含<string>
,应该足够了
答案 1 :(得分:3)
您必须包含标题<string>
,其中包含类std::basic_string
的定义,包括std::string
这是定义operator <<
的标题。
还要考虑使用数组的类std :: map insted。例如
std::map<std::string, int> verticies =
{
{ "AB", 0 }, { "AC", 0 }, { "AD", 0 }, { "BC", 0 }, { "BD", 0 }, { "CD", 0 }
};
如果代码不编译,则在初始化列表中显式指定std :: pair。例如
{ std::pair<std::string, int>( "AB", 0 ), std::pair<std::string, int>( "AC", 0 ), ...}