2013-02-05 92 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

相关问题