Конвертировать const char * в QString

Я должен использовать вывод функции типа 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());

13

Решение

Код ниже должен работать нормально. Ваша проблема, скорее всего, где-то еще. Пожалуйста, сделайте чистую сборку.

Ошибка будет где-то еще в вашем более сложном коде, которым вы не поделились с нами. Возможно, у вас проблемы с установкой _foo неправильно.

Как вы сами отметили, вы не можете изменить интерфейс, но лучше принять к сведению, что в идеальном мире вы не будете смешивать std-строки с QStrings. Вы бы просто использовали QStrings в вашем коде.

Даже если по какой-то причине вам нужно использовать типы std или raw char *, лучше не выполнять такое const-приведение в коде, так как QString будет справляться с передаваемыми ему константными строками.

main.cpp

#include <QString>
#include <QDebug>

class ClassA
{
public:
ClassA() { _foo = "Hello World!\n"; }
~ClassA() {}

char* getData() const {
return const_cast<char *> (_foo.c_str());
}

private:
std::string _foo;
};

int main()
{
ClassA temp;
QString myString = QString::fromUtf8(temp.getData());
qDebug() << "TEST:" << myString;
return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

Выход

TEST: "Hello World!
"
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector