2012-02-27 5 views
2

this answerのコードを使用してCSVファイルを読み込んでいます。const CSVRow& rowの値をフォームコントロールに割り当てたいとします(例:ListBox)。どうすればこれを達成できますか?CSVデータをフォームコントロール

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()を使用してみましたが、それは私にエラーを与えます:

Cannot convert const std::basic string to System::String

+0

次の質問の重複:http://stackoverflow.com/questions/1120140/csv-parser-in-c –

答えて

0

実際には、CSVRowCItypedefをのstd::stringsにあるstd::stringの要素を表します.C++/CLIのWinFormsアプリケーションでこのコードを使用したいので、最初にSystem.Stringに変換する必要があります(これはAdd()メソッドが予期しているものです)。おそらく、あなたはの線に沿って何かをすることができます:

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

私は、おそらくstd::stringSystem.Stringに変換するためのより良い方法がありますC++/CLIに精通していませんよ。

+0

これをSystem.Stringに変換する方法は? –

+0

私は答えの中で 'std :: string'から' System.String'に変換する方法を記述しました。あなたはその答えを完全に読んだのですか? –

+0

返信ありがとうございます。しかし、私はあなたのメソッドを試してみましたが、次のようなエラーがありました:1. 'c_str': 'std :: _ Vector_const_iterator <_Ty,_Alloc>'のメンバーではありません... 'gcnew'はマネージタイプのオブジェクトを作成するためにのみ使用できます。 .. '文字列':あいまいな記号\t 4. '^': '文字列'型でこの間接を使用できません –

0

あなたが実装している回答に欠陥があるようです。 CSVフィールドにカンマを埋め込むことは可能ですが、答えは認識されないようです。

データにカンマが埋め込まれていないことがわかっている場合は、問題がないはずです。しかし私は古いバージョンthat I've posted onlineを持っています。

関連する問題