Мне нужно использовать вывод функции типа const char*
, и мне нужно преобразовать его в QString
.
Примечание: внутри этой функции есть строки кода для возврата const char*
char* ClassA::getData() const{
return const_cast<char *> (_foo.c_str());
}
где _foo
равно std::string
.
Я пытался использовать следующие строки кода, но всегда получал пустую строку (на самом деле не пустую, а содержал только символы новой строки и пренебрегал всеми остальными символами).
QString foo1 = QString(temp.getData());
QString foo2 = QString::fromLocal8Bit(temp.getData());
QString foo3 = QString(QLatin1String(temp.getData()));
QString foo4 = QString::fromAscii(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
должно работать. - person lpapp   schedule 29.12.2013QString
принимаетconst char *
. Не нужно изо всех сил притворяться, что это не постоянные данные. - person chris   schedule 29.12.2013const_cast<char *>
функции, которую я вызываю. но у меня нет разрешения редактировать эту функцию, чтобы она возвращалаstd:string
или обычныйchar *
- person Mahmoud Hassan   schedule 29.12.2013getData()
) в переменную и проверяю с помощью отладчика, действительно ли функция возвращает допустимую строку. Затем продолжите преобразование в QString. Он должен быть преобразован, так как QString имеет подходящий конструктор (qt-project .org/doc/qt-4.8/qstring.html#QString-8). Как сказал Крис, попробуйте без кастинга, просто сconst char*
. - person Sceptical Jule   schedule 29.12.2013const_cast
! Немедленно! - person Lightness Races in Orbit   schedule 29.12.2013&_foo.front()
. Функционально то же самое, но не вызывает удивления. - person Lightness Races in Orbit   schedule 29.12.2013