провел пару тестов и выяснил интересную вещь: по умолчанию Qt выставляет Latin-1 (или UTF-8), а не системную кодировку
следующий код на винде и на маке дал абсолютно одинаковый результат:
C++ (Qt)
char c = 0xFF;
QTextCodec *cstr = QTextCodec::codecForCStrings(), *loc = QTextCodec::codecForLocale();
cout << "locale: " << (loc ? loc->name().constData() : "fail") << "\n";
cout << "0xFF: '" << qPrintable(QString::fromAscii(&c)) << "'; cstr: " << (cstr ? cstr->name().constData() : "fail") << "\n";
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("MacRoman"));
cout << "0xFF: '" << qPrintable(QString::fromAscii(&c)) << "'; cstr: " << QTextCodec::codecForCStrings()->name().constData() << "\n";
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251"));
cout << "0xFF: '" << qPrintable(QString::fromAscii(&c)) << "'; cstr: " << QTextCodec::codecForCStrings()->name().constData() << "\n";
cout.flush();
locale: System
0xFF: 'ÿ'; cstr: fail
0xFF: 'ˇ'; cstr: Apple Roman
0xFF: 'я'; cstr: windows-1251
получается без if, QLocale и #ifdef не обойтись?
вот нашел одну переписку, которая дает положительный ответ на предыдущий вопрос...
http://lists.trolltech.com/qt-interest/2007-03/thread01152-1.htmlз.ы. про qDebug() знаю, но вспомнил о нем только сейчас