Seite 1 von 1
QString nach int umwandeln.
Verfasst: 30. Mai 2009 10:10
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.
Verfasst: 30. Mai 2009 10:40
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?
QString nach int umwandeln
Verfasst: 30. Mai 2009 12:55
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.
Verfasst: 30. Mai 2009 13:23
von Christian81
Was steht in satz[1] drin? Wenn "102305" dann klappt es auch ...
QString nach int umwandeln
Verfasst: 30. Mai 2009 14:10
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.
QString nach int umwandeln.
Verfasst: 30. Mai 2009 16:31
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;
}