Данные CSV в элемент управления формы - PullRequest
2 голосов
/ 27 февраля 2012

Я использую код из этого ответа , чтобы прочитать файл 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 string в System :: String

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Ответ, который вы реализуете, кажется ошибочным.Можно ввести запятые в поля CSV, которые, похоже, ответ не распознает.

Возможно, вы точно знаете, что ваши данные никогда не будут иметь запятых, и в этом случае их не должно быть.проблема.Но у меня есть более старая версия , которую я разместил в сети , которая демонстрирует некоторые дополнительные шаги, которые следует предпринять.

0 голосов
/ 27 февраля 2012

Я вижу, что тип 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...