将CSV数据导入Form控件

时间:2012-02-27 07:26:50

标签: c++ c++-cli

我正在使用this answer中的代码来读取CSV文件,并且我想将const CSVRow& row值分配给表单控件(例如ListBox)。我怎么能做到这一点?

以下是我想要更改的代码:

void display(const CSVRow& row)
{
    if(!row.size()) return;
    CSVRowCI i = row.begin();
    std::cout << *(i++); 
    for(; i != row.end(); ++i)
        std::cout << ',' << *i;
}

但我想做的不是std::cout << ',' << *i

this->ListBox1->Items->Add(*i);

我尝试使用*i.ToString(),但它给了我一个错误:

  

无法将const std :: basic字符串转换为System :: String

2 个答案:

答案 0 :(得分:0)

我看到类型CSVRowCI实际上是typedef,表示std::string std::vector中的std::strings元素。由于您要使用此在C ++ / CLI WinForms应用程序中的代码,您需要首先将其转换为System.String(因为这是Add()方法所期望的)。也许你可以按照以下方式做点什么:

String^ myString= gcnew String(*i.c_str());
myListBox->Items->Add(myString);

我对C ++ / CLI不太熟悉,因此可能有更好的方法将std::string转换为System.String

答案 1 :(得分:0)

您正在实施的答案似乎存在缺陷。可以在CSV字段中嵌入逗号,答案似乎无法识别。

也许您知道您的数据永远不会有嵌入式逗号,在这种情况下应该没有问题。但是我有一个旧版本that I've posted online,它展示了应该采取的一些额外步骤。