QString в const std::string

Я хочу присвоить значение в QString const std:: string

QString qfile("some value");

это переменная const std:: string

const std::string file

Код, который я использую

file = qfile.toStdString();

Приведенные выше коды отлично работают для обычной std::string . Но есть некоторая проблема из-за ключевого слова "const". Как мне это решить?

3 ответа

Решение

Не используйте оператор присваивания для инициализации std::string объект, а скорее инициализировать переменную напрямую.

const std::string file = qfile.toStdString();

Помимо этого, пожалуйста, убедитесь, что вы знаете, какая кодировка QString::toStdString() использует; В отличие от QString, std::string не зависит от кодировки (это строка байтов, а не символов).

Константы - это выражения с фиксированным значением.

http://www.cplusplus.com/doc/tutorial/constants/

Вы также можете избавиться от const сделав копию возвращаемого значения toStdString():

QString str("text");
std::string std_str(str.toStdString());
Другие вопросы по тегам