QCoreApplication und Variablen von Stdin einlesen

Verschiedenes zu Qt
Antworten
twessels
Beiträge: 18
Registriert: 28. Mai 2007 13:23
Kontaktdaten:

QCoreApplication und Variablen von Stdin einlesen

Beitrag von twessels »

Hi,
vielleicht ist diese Frage zu trivial, da ich sie auch nicht über die Suche finden konnte. Habe aber trotzdem ein Problem mit dem Einlesen von Variablen in der Konsole.

Code: Alles auswählen

#include <QCoreApplication>
#include <QTextStream>
#include <stdio.h>
#inlcude "client.h"

int main(int argc, char **argv)
{
	QCoreApplication app(argc, argv);
	Client client;
	QString IPv4Addr;
	quint16 port;
	
	QTextStream in(stdin, QIODevice::ReadOnly);
	QTextStream out(stdout, QIODevice::WriteOnly); 
	
	//Text einlesen
	printf("IP:");
	IPv4Addr = in.readLine();
	
	//Zahl einlesen
	printf("Port:");
	scanf("%u", &port);
	
	
	if(!client.connectTo(IPv4Addr, port))
		return;
	
	
	return app.exec();
}
Das Text einlesen mittels QTextStream hab ich nach eniger Suche im Qt Assistant herausgefunden.
Wie lese ich richtig ein quint16-Datentyp von der Konsole ein? Scanf() gibt mir beim kompilieren Fehler aus.

Was ist eigentlich generell der Unterschied zwischen Datentypen in Qt und C?? Was muss ich beachten wenn ich mit beiden arbeite???
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Von der Konsole bekommst Du immer Text, wie der Begriff QTextStream auch eigentlich verdeutlichen sollte. Wenn da Zahlen bei sind, musst Du sie selbst umwandeln.

Mir sieht das aber mehr danach aus, als wenn Du Aufrufparameter auswerten willst und da nutzt Dir lesen von der Konsole nichts, da die Parameter bereits da sind und nicht erst kommen. Die Anzahl der Parameter steht in argc, die Parameter selbst in argv.

Code: Alles auswählen

int main( int argc, char** argv )
{
	for (int l=1; l<argc; l++)
	{
		QString par = argv[l];
	}
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.
Antworten