QString in *char umwandeln

Verschiedenes zu Qt
Antworten
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

QString in *char umwandeln

Beitrag 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
johlke
Beiträge: 15
Registriert: 21. Januar 2008 11:59

Beitrag 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[]().
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag 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.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
johlke
Beiträge: 15
Registriert: 21. Januar 2008 11:59

Beitrag von johlke »

macman, schreibt wie man's richtig macht. ich hab zu schnell geschaut, wusste aber eben, dass sowas in der doku steht.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QString in ein locale-Encoding umwandeln (toLatin1(), toUtf8()) und dann das erzeugte QByteArray ausgeben. Das hatten wir aber auch schon zig mal...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
Antworten