Seite 1 von 1

QString in *char umwandeln

Verfasst: 9. September 2008 14:55
von Qt-nator
Hi,

ich möchte einen QString in ein * char umwandeln.

Mein ansatz bis her und woführ ichs brauch:


Für die Funktion brauch ichs.

Code: Alles auswählen

PH_DATA* GetDataFromFile(char* file);
Deswegen wollte ich mir die Datei per Dialog raussuchen

Code: Alles auswählen


QString strFileName = QFileDialog::getOpenFileName(0, "PH open", strDirectory, "ParameterMap (*.PH1)");

Und dann in das entsprechende Format umwandeln nur da scheiter ich dran.

Wäre nett wenn mir jemand einen Denkanstoß oder einen Lösungsansatz sagen könnte.

Brauch halt einen char Pointer auf das File.

Gruß

Qt-nator

Verfasst: 9. September 2008 14:56
von johlke
Das steht ganz klar in der Online-Doku:
http://doc.trolltech.com/4.4/qstring.html#constData hat geschrieben: const QChar * QString::constData () const

Returns a pointer to the data stored in the QString. The pointer can be used to access the characters that compose the string. For convenience, the data is '\0'-terminated.

Note that the pointer remains valid only as long as the string is not modified.

See also data() and operator[]().

Verfasst: 9. September 2008 15:02
von Qt-nator
Du meinst dann so:

Code: Alles auswählen


QChar *data = strFileName.data();

Aber dann hab ich ein QChar und ich will aber ein char. Weil die Funktion nur char nimmt. Das das problem, egal was ich versuche ich krieg nur fehler.

Verfasst: 9. September 2008 15:07
von macman
Beschäftige dich mal mehr mit der Doku, dann würdest Du so triviale Sachen auch finden ;)
http://doc.trolltech.com/4.4/qbytearray.html#data

Verfasst: 9. September 2008 15:09
von johlke
macman, schreibt wie man's richtig macht. ich hab zu schnell geschaut, wusste aber eben, dass sowas in der doku steht.

Verfasst: 9. September 2008 15:14
von Qt-nator
Bringen tuts mir irgendwie aber nix. Weil

Code: Alles auswählen


       QByteArray ba("Hello world");
        char *data = ba.data();
        while (*data) 
         {
             cout << "[" << *data << "]" << endl;
             ++data;
         }

ich hab kein QByteArray sondern ein QString.

Und wenn ich das dann für mich versuch zu benutzen:

Code: Alles auswählen

  QString strFileName = QFileDialog::getOpenFileName(0, "PH open", strDirectory, "ParameterMap (*.PH1)");
         
char *data = strFileName.data();
Bekomm ich wieder nen error:

error C2440: 'Initialisierung': 'QChar *' kann nicht in 'char *' konvertiert werden

Und das genau was mir immer passiert ich hab schon so viel probiert.

Von QString zum stdString zum cstring und dies und das aber immer bekomm ich irgendeine Fehlermeldung das kann nicht konvertiert werden, deswegen würd ich euch bitten mir mal zu zeigen wie mans richtig macht.

Verfasst: 9. September 2008 15:18
von Christian81
QString in ein locale-Encoding umwandeln (toLatin1(), toUtf8()) und dann das erzeugte QByteArray ausgeben. Das hatten wir aber auch schon zig mal...

Verfasst: 9. September 2008 15:42
von RHBaum
toAscii geht auch ....

oder indirekt:

Code: Alles auswählen

QString strX("abcde");
std::string stdString(strX.toStdString());
const char * test = stdString.c_str();
ist aber gleichwertig mit:

Code: Alles auswählen

QString strX("abcde");
QByteArray array(strX.toAscii());
const char * test = array.constData();
es gibt so viele möglichkeiten ...

Ciao ...