Top.Mail.Ru
Уведомления
Очистить все

QString to char pointer

(@dima_unx)
New member

Здравствуйте, подскажите, как можно получить из QString указатель на char*, сделал так:

QString string = "string";
char* ptr = (char*)string .constData();

Но в итоге для каждого символа строки как будто получаю 2 байта, а не один. Не очень хорошо разбираюсь в вопросе, но возможно это связано с представлением данных в Unicode/ASCII. В общем задача получить данные так, чтобы для каждого символа был один байт и сохранить эти байты в массиве.

Цитата
Создатель темы Размещено : 13.03.2025 12:33
Метки темы
Aveal
(@aveal)
Top level Admin

Как вариант:

const char *	qPrintable(const QString &str)
const wchar_t *	qUtf16Printable(const QString &str)
const char *	qUtf8Printable(const QString &str)

Только надо учесть, что:

The char pointer will be invalid after the statement in which qPrintable() is used.
This is because the array returned by QString::toLocal8Bit() will fall out of scope.
ОтветитьЦитата
Размещено : 13.03.2025 14:43
(@dima_unx)
New member

@aveal похоже, что для моей задачи это то, что надо.

ОтветитьЦитата
Создатель темы Размещено : 13.03.2025 16:27
Aveal
(@aveal)
Top level Admin

Запись от: @dima_unx

@aveal похоже, что для моей задачи это то, что надо.

Отлично

 

ОтветитьЦитата
Размещено : 13.03.2025 16:49
Поделиться: