Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > правильное преобразование


Автор: kuvshinka 30.11.2012, 21:29
есть вектор значений некоего типа (мне все равно какого именно - char*, StringList... ) или просто StringList...в него я считываю через объект QSettings некие данные и дальше мне их надо передать в некую функцию в качестве параметра типа char*:
Код

 QSettings settings;
 QStringList *Data;
 Data->append(settings.value("NetData/IP_1", "000.00.00.00") );

char *tt; // это вместо функции проверка приведения типов
tt = Data.at(0); - ошибка !!!

подскажите как правильно привести Data к типу char*... 

Автор: bsa 30.11.2012, 22:18
kuvshinka, во-первых, Data у тебя - это указатель.
во-вторых, метод at() вернет тебе ссылку на первый элемент массива.
в-третьих, судя по тому, что ты добавляешь в Data объекты типа QString, то метод at вернет указатель на QString, который так просто не конвертируется в char*.

Т.е. чтобы получить массив char'ов, тебе необходимо:
1. создать временную переменную типа QByteArray и присвоить ей результат выполнения метода toLatin1() (или toUtf8()) класса QString,  примененных к Data->at(0)
2. создать массив чаров (выделить под него память), равный объему переменной, сделанной в п. 1
3. скопировать содержимое временной переменной в массив.
n. освободить память, выделенную в п. 2

P.S.: кстати, память под Data выделить не забыл?

P.P.S: рекомендую следовать одному стилю оформления кода. В частности, первый символ переменной должен быть маленьким.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)