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.
QString nach int umwandeln.
QString nach int umwandeln
// 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.
//#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:
QString nach int umwandeln
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.
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.
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;
}
========================
//#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;
}