2 Stimmen

CSV-Daten in Formularsteuerung

Ich verwende den Code aus diese Antwort um eine CSV-Datei zu lesen, und ich möchte die const CSVRow& row Wert für ein Formularsteuerelement (z. B. ein ListBox ). Wie kann ich das bewerkstelligen?

Hier ist der Code, den ich gerne ändern würde:

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

Aber stattdessen std::cout << ',' << *i möchte ich tun:

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

Ich habe es mit *i.ToString() aber ich erhalte eine Fehlermeldung:

Konstante std::basic string kann nicht in System::String umgewandelt werden

0voto

Bhargav Punkte 9559

Ich sehe, dass der Typ CSVRowCI ist eigentlich ein typedef Vertretung einer Person std::string Element in einem std::vector de std::strings Da Sie diesen Code in einer C++/CLI-WinForms-Anwendung verwenden möchten, müssen Sie ihn in eine System.String zuerst (denn das ist es, was die Add() Methode erwartet wird). Vielleicht könnten Sie etwas in der Art von tun:

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

Ich bin nicht sehr vertraut mit C++/CLI so, es gibt wahrscheinlich bessere Möglichkeiten, um eine std::string a System.String .

0voto

Jonathan Wood Punkte 61798

Die Antwort, die Sie geben, scheint fehlerhaft zu sein. Es ist möglich, Kommas in CSV-Felder einzubetten, was die Antwort nicht zu erkennen scheint.

Vielleicht wissen Sie ganz genau, dass Ihre Daten niemals eingebettete Kommas enthalten werden, dann sollte es kein Problem geben. Aber ich habe eine ältere Version die ich online gestellt habe die einige zusätzliche Schritte aufzeigt, die unternommen werden sollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X