2012-06-27 11 views
0

Я хочу, чтобы присвоить значение в QString к константному станду :: строкаQString в сопзЬ станда :: строка

QString qfile("some value"); 

это сопзЬ станд :: строка переменной

const std::string file 

Кодекс что я использую

file = qfile.toStdString(); 

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

+3

вы не можете назначить на константные – Andrew

+0

любую работу вокруг? –

+0

Сделать его приватным – Jake1164

ответ

7

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

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

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

+0

или 'const std :: string file (qfile.toStdString());' – stijn

+1

(вставьте здесь обычный комментарий о наиболее неприятном анализе) –

+0

переменная уже используется в коде. Я просто хочу обновить его содержимое. –

0

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

QString str("text"); 
std::string std_str(str.toStdString()); 
Смежные вопросы