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

Как превращается один QString в char? какой-то легкий и понятный способ?

Это, чтобы это понимать наиболее спасибо.

1
задан 13.10.2016, 16:03
3 ответа

QString размещает mГ©todo toStdString(), которые возвращают тебе один std::string. Получать один char начиная с этого объекта - тривиально:

QString cadena = "Hola";
std::string cadenaStd = cadena.toStdString();
char c = cadenaStd[0];
std::cout << c;

Приветствие.

4
ответ дан 24.11.2019, 13:08
  • 1
    я resolvistes две проблемы в одном – Sergio Ramos 12.10.2016, 03:01
  • 2
    Если я помогаю тебе этот ответ, помечать ее как " correcta" пожалуйста Омар!. =) – Jorgesys♦ 12.10.2016, 03:12

Вопрос.

Как превращается один QString в char?

Не существует возможное превращение сложного типа (в этом случае QString) в фундаментальный тип (в этом случае char), твой вопрос похожий в: "Как превращается Машина в Поршень?".

Хотя верно, что Машины имеют двигательные и у механизмов есть Поршни, Поршень - часть Машины.

Ты не можешь превращать Машину в Поршень, хотя ты используешь Поршни для construír твоя Машина... параллельно не можешь конвертировать один QString в одном char хотя ты используешь char как предмет одного QString.

Так что я предполагаю, что ты в действительности хотел спросить:

Как я соглашаюсь в char одного QString?

А следовательно я буду основывать мой ответ на этом предположении.

Разъяснение.

QString будь создан как аналогичный класс в класс string; итак он располагает похожими, эквивалентными методами или exáctamente равные.

Подсказка.

Использует оператор индексированный (я имею доступ посредством квадратных скобок [ и ]). Ввиду почти полной эквивалентности между QString и std::string оба объекта располагают вышеупомянутым оператором и он используется того же способа.

Так что, в следующем примере, они показывают оба @ когда оператор использует квадратные скобки на пятом положении:

QString       q_mail("hola@mundo.com");
std::string stl_mail("hola@mundo.com");

std::cout << "quinto caracter: " <<   q_mail[4];
std::cout << "quinto caracter: " << stl_mail[4];
1
ответ дан 24.11.2019, 13:08

Так как понимая, что ты используешь Qt 5.x, он относительно простой.

Чтобы конвертировать один одного (или какие-то) символов одного QString ты был бы должен использовать что-то как следующий код:

 QString ejemplo="ejemplo";
 std::cout << ejemplo.at(0).toLatin1(); //funcion at devuelve el tipo de dato Qchar de la cadena en la posicion 0
 //y .toLatin1() devuelve el caracter en dato char.

Взамен, если ты хочешь конвертировать все QString, более быстрый выбор состоит в том, чтобы использовать .toLatin1() на объекте QString.

 QString ejemplo2="ejemplo2";
 ejemplo2.toLatin1(); //esta funcion devuelve un QByteArray

Один QByteArray в groso способ класс, который служит как динамическая договоренность char (ты можешь прилагать, добавлять, прекращаться, и т.д.), без комплексности динамической памяти.

Кроме того нужно говорить, что одного QByteArray ты можешь получать информацию как тип char если ты используешь функции data или constData.

 QByteArray ejemploByteArray=ejemplo2.toLatin1();
 ejemploByteArray.constData(); //devuelve un puntero constante a un data *char, por ejemplo si solo es un parametro de lectura
 ejemploByteArray.data(); //devuelve un puntero  *char, este si modificable, por lo que si lo manipulas cambiaras tambien los datos de QByteArray, por lo que aqui si hay que tener cuidado.
1
ответ дан 24.11.2019, 13:08