2012-02-27 3 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으로 변환해야합니다. 아마 당신의 라인을 따라 뭔가를 할 수 :

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>'의 멤버가 아닙니다 ... 2. 'gcnew'는 관리되는 유형의 객체를 생성하는 데에만 사용할 수 있습니다. '문자열': 모호한 기호 \t 4. '^': '문자열'유형에서이 간접 참조를 사용할 수 없습니다. –

0

구현중인 답변에 결함이있는 것으로 보입니다. 대답이 인식되지 않는 CSV 필드에 쉼표를 포함시킬 수도 있습니다.

데이터에 쉼표가 포함되지 않는다는 사실을 알고 계실 것입니다.이 경우 문제가 발생하지 않아야합니다. 하지만 이전 버전 인 that I've posted online을 사용하면 몇 가지 추가 단계를 수행 할 수 있습니다.

관련 문제