QString nach int umwandeln.

Verschiedenes zu Qt
Antworten
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

QString nach int umwandeln.

Beitrag von sowas »

Hallo,
in der Dok ich finde nicht wie ich QString in integer umwandeln kann.
Ich habe z.B. ein String "102305" den möchte ich nach integer umwandeln und um 1 erhöhen.
Die Funktionen wie toInt kann man nicht verwenden, weil sie selbst umwandeln z.B wird aus "65" ein A aber ich möchte weiter 65 haben aber als Ziffer.
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag von Willi2793 »

Hm, dann machst Du da was falsch. Bei mir funktioniert die Funktion toInt() genau so wie Du das gerne hättest.

Vielleicht mal etwas Code?
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

QString nach int umwandeln

Beitrag von sowas »

// die vorlage.txt
//#10201 #Steuer. #1 Erste Variante. #2 zweite Variante. #3 Dritte Variante.
//#10301 #Alle belasten die Umwelt
//#10401 #Motor. #1 Diesel. #2 Benzin. #3 Gas # 4 Druckluft
//#10501 #Fahrrad. #zu schwer.

#include <QtCore>
#include <cstdio>
#include <QString>
void sqlFile(QIODevice *inDevice, QIODevice *outDevice)
{
QTextStream in(inDevice);
QTextStream out(outDevice);

in.setCodec("UTF-8");
out.setCodec("UTF-8");
int rautenzahl =0;
int zeilenzahl =0;
int satzzahl =0;
int tempi =0;
int zz;
bool ok;

QString gesamt,wort, satz,temp, anfang, ende;

anfang = "INSERT INTO textsp (id, wort,satz)";
ende =");";
gesamt.append(in.readAll());
QStringList zeilen = gesamt.split('\n');
// Anzahl der Zeilen
zeilenzahl =zeilen.size();

for (int i = 0; i < zeilen.size()-1; ++i){
if (!zeilen.at(i).isEmpty()){
// Inhalt der Sätze
QStringList satz = zeilen.at(i).split('#');
rautenzahl = zeilen.at(i).count('#');
satzzahl = satz.size();
for (zz =1; zz < satzzahl;zz++){
if (!satz[zz].isEmpty()){
// tempi = satz[1].toInt(&ok, 10); // < -----------

wort += anfang + "\'"+satz[1]+"\'"+","+"\'"+satz[2]+"\'"+"\n";
// wort += anfang + "\'"+tempi+"\'"+","+"\'"+satz[2]+"\'"+"\n";

}
}
}
}
out << wort;
}

int main()
{

QFile inFile("vorlage.txt");
QFile outFile("augabe.sql");

inFile.open(QFile::ReadOnly);
outFile.open(QFile::WriteOnly);

sqlFile(&inFile, &outFile);

return 0;
}

die ersten 4 Zeilen ist die Vorlage
in tempi soll die umwandlung von QString in int erfolgen, aber es klappt nicht.
ich weiß nicht warum.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was steht in satz[1] drin? Wenn "102305" dann klappt es auch ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

QString nach int umwandeln

Beitrag von sowas »

ja so wie es jetzt ist, dann funktioniert es
aber wenn die "//" vor

" tempi = satz[1].toInt(&ok, 10);" und vor
" wort += anfang + "\'"+tempi+"\'"+","+"\'"+satz[2]+"\'"+ende+"\n"; "

entferne
und statt dessen

" wort += anfang + "\'"+satz[1]+"\'"+","+"\'"+satz[2]+"\'"+ende+"\n"; "

ausblende, dann erhalten ich auf meinem PC keinen integer mit dem Wert 103205 sondern ein grosse "U" oder ein anderes komisches Zeichen.
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

QString nach int umwandeln.

Beitrag von sowas »

ich hab's, jetzt macht es was soll:
========================
//#10201 #Steuer. #1 Erste Variante. #2 zweite Variante. #3 Dritte Variante.
//#10301 #Alle belasten die Umwelt
//#10401 #Motor. #1 Diesel. #2 Benzin. #3 Gas # 4 Druckluft
//#10501 #Fahrrad. #zu schwer.
#include <QChar>
#include <QtCore>
#include <cstdio>
#include <QString>
void tidyFile(QIODevice *inDevice, QIODevice *outDevice)
{
QTextStream in(inDevice);
QTextStream out(outDevice);

in.setCodec("UTF-8");
out.setCodec("UTF-8");
QChar ch;
int rautenzahl =0;
int zeilenzahl =0;
int satzzahl =0;
int satzlg =0;
int wortlg =0;
int zz =0;
int vvar;
QString gesamt, idnr, wort, satz, temp, anfang, ende;
anfang = "INSERT INTO textdt (id, wort,satz) VALUES(";
ende =");";
gesamt.append(in.readAll());
QStringList zeilen = gesamt.split('\n');
// Anzahl der Zeilen
zeilenzahl =zeilen.size();

for (int i = 0; i < zeilen.size()-1; ++i){
if (!zeilen.at(i).isEmpty()){
// Inhalt der Sätze
QStringList satz = zeilen.at(i).split('#');
rautenzahl = zeilen.at(i).count('#');
satzzahl = satz.size();
// Länge eines Satzes
satzlg = satz.at(1).size();
wortlg = satz[1].size();
idnr = satz[1].trimmed();
temp =satz[2].trimmed();
vvar =0;
vvar = idnr.toInt();

for (zz =1; zz < satzzahl ;zz++){
if (!satz[3].isEmpty()){
if(zz <3){}
else if (zz >2){
wort += anfang +"\'"+idnr+"\'"+","+"\'"+temp+"\'"+","+"\'"+ satz[zz].trimmed()+"\'"+ende+"\n";
vvar =vvar *1+1;
idnr ="";
idnr.append(QString("%1").arg(vvar));
}
}
}
}
}
out << wort;
}
int main()
{

// QFile inFile("a6r.txt");
QFile inFile("su028.txt");
// QFile outFile("satz2.sql");
QFile outFile("su028.sql");

inFile.open(QFile::ReadOnly);
outFile.open(QFile::WriteOnly);

tidyFile(&inFile, &outFile);

return 0;
}
Antworten