2014-04-10 114 views
4

這是我寫的一個非常簡單的程序的代碼片段。我對C++相當陌生,但擁有Java的背景知識,所以我可能會對印刷值應該如何工作有一些先入之見。我的問題是,當我做這行:爲什麼我不能使用cout在C++中打印字符串值數組?

cout << "Please enter the weight for edge " << verticies[i] << endl; 

我得到一個錯誤信息說,操作數不爲< <匹配的指定運營商。基本上這是說我不能做cout < < 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; 
} 
+2

您是否包含''? – Cameron

+0

當問這種問題時,錯誤的確切文本是非常有用的。 –

+1

擺脫'stdafx.h',對於小程序,預編譯頭文件不值得冒險。 –

回答

7

嘗試包括<string>,應該足夠

+0

啊!非常感謝您的快速響應。這解決了它。 – Jordando

+0

請將此線程標記爲已解決 – Ryp

3

你必須包括頭<string>包含包括std::string

正是這一類std::basic_string的定義標題operator <<被定義。

還考慮使用數組中的std :: map類。例如

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), ...} 
相關問題