Stellen wir uns folgendes vor
1) aktuelles 64bit ARCH
2) Ein Hello-World Programm im QTCreator wird geschrieben (siehe unten)
3) nun wird der Debugger direkt aus dem QTCreator gestartet um sich die Variablen anzusehen
4) was stellen wir fest, nachdem wir einen Breakpoint auf die
if (... Zeile gesetzt haben und das Programm laufen lassen?
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
std::cout << argv[1] << endl;
std::string s(argv[1]);
std::cout << s << endl;
if ( s == "Mäx" ) std::cout << "Yeahhh" << endl;
}
Die Frage unter 4) ist falsch gestellt. Was
ich festellen musste, ist
hier zu lesen. Kann das jemand nachvollziehen? Und/oder ist das normal? I hope not!
Wie dort beschrieben habe ich wirklich keinen blassen Schimmer, warum es sich so verhält. Visual Studio unter Windows und auch Eclipse Juno unter Linux (letzteres auf dem gleichen Rechner mit dem gleichen GDB und GCC) machen es ja richtig: Ein ä ist ein ä ist ein ä und kein '=\' oder sonstwas. Auch wenn intern bei einem Stringvergleich das richtige Ergebnis rauskommt, kann man doch so nicht entwickeln, geschweige denn debuggen.
Die Benutzung von QString oder überhaupt QT fällt aus. Ich will (m)ein Projekt auf die STL umstellen, weil QT dafür nicht benötigt wird. Warum ich überhaupt QT benutzte ist einfach zu erklären: libvcard benötigt es. Auch das will ich ändern.
Welches Projekt?:
https://github.com/tfl/muttvcardsearch