TeamViewer Motive 3

[C++] String in Char Array umwnandeln

[Moepi]1

Lt. Commander
Registriert
Jan. 2002
Beiträge
1.233
Ich habe nen String vorliegen, der für eine andere Funktion in ein Char Array umgewandelt werden muss. Ein Cast (const char*)&mystring wird zwar vom Compiler akzeptiert, aber funktionieren tuts nicht...

Strings dachte ich sind nichts anderes als Char Arrays - kann doch also net so schwer sein oder?
 
Code:
int Mynet::connectToServer(int port, std::string ip)
{
        cli_sock_info.sin_family = AF_INET;
        cli_sock_info.sin_addr.s_addr = inet_addr(ip.c_str());
        cli_sock_info.sin_port = htons(port);
        cli_sock = socket(AF_INET, SOCK_STREAM, 0);

        result = connect(cli_sock, (struct sockaddr *)&cli_sock_info, sizeof(cli_sock_info));
        return result;
}

Der Compiler beschwert sich zwar nicht, aber klappen tuts wieder net. Bin mir aber ziemlich sicher, dass der Inhalt des Strings richtig ist...
 
Letzten Endes ja, weil noch keiner Server läuft. Aber so langsam beschleicht mich das Gefühl, dass was am String faul ist. Das ganze wird von ner anderen Methode folgendermaßen eingelesen:

Code:
void AppMainWindow::setServer()
{
         bool ok;
         QString server = QInputDialog::getText(this, tr("QInputDialog::getText()"), tr("Server IP: "), QLineEdit::Normal, QDir::home().dirName(), &ok);
         QString port = QInputDialog::getText(this, tr("QInputDialog::getText()"), tr("Server Port: "), QLineEdit::Normal, QDir::home().dirName(), &ok);
         server_ip = server.toStdString();
         printf("%s",server_ip);
         server_port = port.toInt(&ok, 10);
}

Ich muss leider den haken um Strings schlagen, da QT dankenswerter Weise nen QString nicht in ein Char Array umwandelt. Mit schmiert das Programm bei der obigen Implementierung beim printf mit nem Speicherzugriffsfehler ab. Es liegt also der verdacht nahe, dass der String ins Nirvana geht.
Der String an sich (server_ip) ist übrigens in der Headerfile via "std::string server_ip" als globale Variable deklariert.


/edit:
Problem gelöst. Ich lass mir von QT einfach die IP als Integer geben und mach statt dem inet_addr(...) ein htons(ip) - fertig.

Danke Euch!
 
Zuletzt bearbeitet:
Sorry FreddyMercury, aber du weisst schon, dass Freddie mit IE und nicht mit Y geschrieben wird ?!

BTW, bin zwar auch IT-Fuzzi, aber was Quidoff meinte, scheint mir schon am interessantesten.... zuviele Konvertierungen verderben nicht nur den Brei, sondern auch den Source-Code....
 
BrianMay schrieb:
BTW, bin zwar auch IT-Fuzzi, aber was Quidoff meinte, scheint mir schon am interessantesten.... zuviele Konvertierungen verderben nicht nur den Brei, sondern auch den Source-Code....

Ich hab jetzt weniger Konvertierungen drinnen als ursprünglich - Integer rulen ;)
 
Loesung:

Code:
QString str ("hallo");
	
const char* charString =  str.toAscii().constData();


mfg michbex
 
Zurück
Oben