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.
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:
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 ...