我正在使用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
答案 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,它展示了应该采取的一些额外步骤。