Visual C ++声明一个字符串数组

时间:2009-09-30 17:38:36

标签: visual-c++

我在使用Visual C ++。我正在给出以下命令

String nodename[100];

但是此命令出现以下错误

  

“错误:'System :: String':原生   数组不能包含此托管   类型“

那我现在该怎么办?

4 个答案:

答案 0 :(得分:4)

如果您想编写本机C ++应用程序,那么您不能像错误所说的那样使用托管类型。

这意味着您必须使用C ++字符串类

#include <string> // at the top of the file
std::string nodename[100]; // where you want to declare the array

而不是System::String

另一方面,如果要创建托管C ++ / CLI应用程序,则不能使用本机阵列。 (但可以使用所有.NET类型)

答案 1 :(得分:3)

您没有说是否需要托管C ++,C ++ / CLI或非托管C ++

托管C ++

http://www.codeproject.com/KB/mcpp/csarrays01.aspx

C ++ / CLI

http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

非托管C ++(标准C ++)

std :: string nodename [100]; //使用STL字符串,而不是.NET String

答案 2 :(得分:0)

行。首先,它看起来像你正在使用托管 C ++(ick)。其次,您试图声明一个字符串数组(不是字符,而是整个字符串)。这真的是你想要做的吗?您确定不需要char nodename[100]或仅String nodename

的内容吗?

如果你真的想要一个字符串数组,看起来编译器要么你想要使用它的一个托管类矢量类型,要么只使用非托管类型来执行它。

答案 3 :(得分:0)

#include "stdafx.h"
#include <conio.h>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    string name[5] = {"Marco","Jenna","Alex","Dina","Allyson"};
    int index = 5;

    printf("List:\n\n");
    for (int i = 0; i < index; i++)
    {
        cout << name[i] << endl;
    }
    _getch();
    return 0;
}