res = stmt->executeQuery("SELECT id, label FROM test ORDER BY id ASC");
while (res->next()) {
// You can use either numeric offsets...
cout << "id = " << res->getInt(1); // getInt(1) returns the first column
// ... or column names for accessing results.
// The latter is recommended.
cout << ", label = '" << res->getString("label"); << "'" << endl;
}
Как можно превратить res->getString("label"); в обычную строку char??
ResultSet::getString возвращает std::string, а для этого типа оператор вывода в поток перегружен, так что всё должно работать без каких-либо дополнительных ухищрений.
Подозреваю, что ошибка компиляции, на самом деле, возникает из-за лишней точки с запятой, поставленной после res->getString("label").
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Romeo писал(а):ResultSet::getString возвращает std::string, а для этого типа оператор вывода в поток перегружен, так что всё должно работать без каких-либо дополнительных ухищрений.
Подозреваю, что ошибка компиляции, на самом деле, возникает из-за лишней точки с запятой, поставленной после res->getString("label").
Да этот пример компилируется нормально.
Мне нужно только превратить res->getString("label") в строку дальнейшей обработки. Я честно говоря никогда не работал с потоками...
Так а при чём тут потоки? Поток - это std::cout. Как раз для того, чтобы вывести в него std::string никаких знаний по потокам не требуется, так как всё уже реализовано. Результат, возвращаемый ResultSet::getString имеет тип std::string и это всего лишь удобная обёртка для строки, не имеющая никакой связи с потоками.
Какая именно дальнейшая обработка подразумевается с возвращённой строкой и в какую "другую" строку имеется желание превратить std::string? В обычную C-шную? А зачем? Методы класса std::string практически полностью покрывают весь набор функций для работы с обычными С-строками. Почему не воспользоваться методами класса?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Romeo писал(а):Так а при чём тут потоки? Поток - это std::cout. Как раз для того, чтобы вывести в него std::string никаких знаний по потокам не требуется, так как всё уже реализовано. Результат, возвращаемый ResultSet::getString имеет тип std::string и это всего лишь удобная обёртка для строки, не имеющая никакой связи с потоками.
Какая именно дальнейшая обработка подразумевается с возвращённой строкой и в какую "другую" строку имеется желание превратить std::string? В обычную C-шную? А зачем? Методы класса std::string практически полностью покрывают весь набор функций для работы с обычными С-строками. Почему не воспользоваться методами класса?
Я всю жизнь работал только с обычные с-шными строками. Мне уже очень много лет (52), перестраиваться...
Я всю жизнь работал с обычными С-шными строками....
Подскажите как изменить программу, что бы результат res->getString("label"); превратился в обычную С-шную строку.
Дело в том, что я переделываю уже написанную программу под новый интерфейс вывода данных MySQL. А переделывать всю обработку во всех текстах.... Это жжжуть....
Вот.
Но я всё же настоятельно рекомендую не выполнять никаких преобразований и работать с std::string дальше. Это более правильно и с точки зрения производительности приложения (отказываемся от лишнего копирования), и с точки зрения удобства. Если вы расскажете, какая именно обработка строки предполагается, я подскажу какие методы вызвать - в этом действительно нет ничего сложного. А на счёт перестраиваться вы не правы, как мне кажется. Глоток нового полезен в любом возрасте
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
paolo64 писал(а):Дело в том, что я переделываю уже написанную программу под новый интерфейс вывода данных MySQL. А переделывать всю обработку во всех текстах.... Это жжжуть....
Вот.
Тогда вы правы. Нужно делать преобразование.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.