2013-02-05 59 views
0

我無法在C++中爲未知原因定義字符串數組。我需要從這個數組中隨機獲取一個字符串。數組中的隨機字符串

一直在努力執行以下操作:

string bands[] = { "Rammstein", "Slipknot", "Franz Ferdinand", "Gorillaz" };

我收到以下錯誤爲:

error C2146: syntax error : missing ';' before identifier 'bands' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
error C3845: 'SpurdoSparde::Form1::bands': only static data members can be initialized inside a ref class or value type 

只是一個提醒,我使用的是Windows窗體應用程序。不知道它是否有任何區別。

+3

你忘了'的std ::'或'包括'? – Rapptz

+0

與您的問題無關:您應該使用'std :: vector'而不是'[]'數組。 – us2012

+0

確保你有'#include '和前綴'std ::'的字符串,如'std :: string bands []] = {...}' – dchhetri

回答

2

看來你不包括string和/或不using std::string。以下作品:

#include <string> 

int main() 
{ 
    std::string bands[] = { "Rammstein", "Slipknot", "Franz Ferdinand", "Gorillaz" }; 
} 

如果你是字符串動態分級收集後,你應該更喜歡std::vector<std::string>在C數組。如果您需要固定大小,請查看std::array<std::string, N>tr1boost替代方案(如果您沒有C++ 11)。

+0

我確實從頭開始包含它,然後再次,我使用的是表單應用程序而不是命令行,所以'int main()'不適用,我想。 –

+1

@ P1CUnrelated'main()'在這裏是無關的,它可能是任何函數。 – juanchopanza

1

你要麼不包括#include <string>或需要將std::命名空間限定符添加到您的類型:

std::string bands[] = { ... }; 

寧願這些做using namespace std;

此外,您可能應該更喜歡使用std::vector,而不是一個普通的老C數組:

std::vector<std::string> bands = { ... }; 
+0

至於你的例子,我得到了以下內容:'錯誤C2039:'vector':不是'std'的成員 錯誤C2143:語法錯誤:缺少';'之前'<' 錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++不支持default {int 錯誤C2334:'{';之前的意外標記。跳過明顯的功能體'抱歉的格式,這對我來說真的很奇怪。 –

+0

矢量文字不是那麼像(還):http://stackoverflow.com/questions/758118/c-vector-literals-or-something-like-them – thang

+0

@ P1CUnrelated你需要'#包括'。轉到http://en.cppreference.com並搜索「矢量」。 – juanchopanza