Пожалуйста, помогите QString удалить функцию, чтобы удалить постоянную строку

#qt #visual-c #qt4

#qt #visual-c #qt4

Вопрос:

Я хочу удалить пустое пространство из постоянной строки, но когда я использовал функцию remove, она показывала ошибку, что постоянную строку нельзя изменить.

 const QString abc = "hello world";
QString def       = " ";
QString mk = abc .remove(def);  // Here error saying const cant change
  

Пожалуйста, помогите

Комментарии:

1. Вы не можете. Вы должны создать неконстантную копию. Или вообще сделайте строку неконстантной.

Ответ №1:

Вы не можете изменить постоянную строку. QString::remove возвращает ссылку на abc, поэтому remove работает с abc, mk — это снова не копия, а abc!! Ищите функции, которые являются функциями const, если вы хотите работать с объектом const.

Редактировать:

 const QString abc = "hello world";
QString ijk = abc;
QString def       = " ";
QString mk = ijk .remove(def);  // Here error saying const cant change
  

Комментарии:

1. Не могли бы вы, пожалуйста, помочь, как я могу это сделать. QTAssistant также говорит то же самое, но не знает, как заставить это работать.

2. Но здесь мы используем временную переменную ijk. Возможно ли это обойтись без использования переменной ijk.

3. Нет — если только вы не начнете с QString abc вместо const QString. Все остальное является грязным (например, приведение const адреса abc к неконстантному указателю и изменение объекта const с помощью неконстантного указателя)

Ответ №2:

Та же операция без дополнительной переменной:

 const QString abc = "hello world";
QString def = " ";
QString mk = abc;
mk.remove(def);