Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/88: Рейтинг темы: голосов - 88, средняя оценка - 4.70
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 205
1

QString to char* Qt5

27.06.2015, 16:25. Показов 15798. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как преобразовать Qstring в char* в Qt5?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2015, 16:25
Ответы с готовыми решениями:

QString to char[]
Добрый день. Необходимо строку разобрать на символы и поместить в массив символов. Пытаюсь...

QString to char[]
Подскажите пожалуйста, как перевести QString в char(именно в char, а не в char*). Спасибо.

QString -> char *
Не судите меня строго, знаю что такие приведения не в стиле Qt и можно забыть о старых сишных...

Из Qstring в char *
Доброго времени суток! Проблема следующая. Так получилось, что имеется функция (сторонняя), которая...

11
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
27.06.2015, 16:28 2
C++ (Qt)
1
2
    QString str = "123";
    const char* cstr = str.toStdString().c_str();
C++ (Qt)
1
2
    QString str = "123";
    char* d = str.toUtf8().data();
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.06.2015, 16:37 3
Flassie, И оба примера того как это не надо делать.

C++ (Qt)
1
2
3
4
5
6
7
{
  QString str = "123";
  QByteArray a= str.toUtf8(); // to....
  char* d=  a.data();
  /* используем "d" и не забываем что он указывает на внутренности "а"
     и данные существует там столько сколько существует "а" */
}
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
27.06.2015, 23:55 4
Avazart, разницы между вашим вариантом и Flassie 0. В обоих случаях указатель живет, пока живет родитель. В вашем случае мы еще и лишнюю переменную создаем, что влияет на производительность.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.06.2015, 00:29 5
RazrFalcon,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
class ByteArray
{
     public:
     ByteArray() { std::cout<<"ByteArray()"<<std::endl; }
     ~ByteArray(){ std::cout<<"~ByteArray()"<<std::endl;}
};
 
 
class String
{
     public:
     String() { std::cout<<"String()"<<std::endl; }
     ~String(){ std::cout<<"~String()"<<std::endl;}
     ByteArray toUtf8()const{   return ByteArray(); }
};
 
int main()
{
    String s;
    s.toUtf8();// или мой вариант
    //ByteArray b= s.toUtf8();
 
    getchar();
    return 0;
}
1
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
28.06.2015, 14:13 6
Avazart, интересная штука. Не сталкивался с таким, так как обычно не использую сишные типы.

Но причина по чему у меня работало, тоже довольно хитрая, как и ваша:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func(char *d)
{
    qDebug() << d; // print 123456
}
 
int main()
{
    QString str = "123456";
    char* d = str.toUtf8().data();
    qDebug() << d; // print 1
    func(str.toUtf8().data());
 
    return 0;
}
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.06.2015, 14:33 7
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Avazart, интересная штука. Не сталкивался с таким, так как обычно не использую сишные типы.
А при чем тут сишные типы? И что значит "сишные" типы?

Цитата Сообщение от RazrFalcon Посмотреть сообщение
Но причина по чему у меня работало, тоже довольно хитрая, как и ваша:
В том то и проблема оно может и работать с мусором от случая к случаю.
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
28.06.2015, 14:39 8
Цитата Сообщение от Avazart Посмотреть сообщение
А при чем тут сишные типы? И что значит "сишные" типы?
char - сишный тип. А char* в С++ вообще почти не встречается, так как есть нормальные строки.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.06.2015, 15:13 9
Цитата Сообщение от RazrFalcon Посмотреть сообщение
char - сишный тип. А char* в С++ вообще почти не встречается, так как есть нормальные строки.
Чего? Не позорьтесь.

Везде где нужны "байты" используется сhar / unsigned char не говоря уже о просто строках и конвертирования с си библиотеками.
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
28.06.2015, 15:39 10
Avazart, что чего?
В том коде с которым работал я - почти не встречается.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.06.2015, 15:48 11
Ну если все писать на Qt тогда вопросов нет, хотя и Qt не решает все проблемы к примеру в некроссплатформенных частях кода где приходится использовать апи системы или либы, а апи то сишное...
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.06.2015, 21:34 12
qPrintable(QString str) - чего это вдруг?
0
28.06.2015, 21:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2015, 21:34
Помогаю со студенческими работами здесь

QString to Char
Здравствуйте, в общем надо из LineEdit вытащить строку и записать в char, я понимаю надо сделать...

QString в char*
Доброго времени суток. Я пытаюсь вставить в массив char элемент(символ), который повторяется в...

Перевод char* to qstring
Всем доброго времени суток, подскажите как перевести из char* в qstring, именно так. Собственно я...

Не преобразуется QString в char*
Добрый день! Не преобразуется QString в char*: struct TS1 { TS1(); int a; float...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru