Форум программистов, компьютерный форум CyberForum.ru

Преобразование string в char* - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) http://www.cyberforum.ru/cpp-beginners/thread509107.html
Задача: k изменяется от 0 до бесконечности ((4k+1)! / ^2) * x^2k = =1/2* X принадлежит интервалу (-1/4 ; 1/4) Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) Проблема в том, что прога не может найти такого числа! Как быть?
C++ RE: Рабыни для производства интернет-порнографии, Санкт-Петербург ночью, посетив порнографический веб-чат (http://Pornication.com http://Pornication.com / http://privatefeeds.com http://privatefeeds.com) я вспомнил о том, что, как когда-то сказал мне один человек, все такого рода веб-страницы принадлежат мафии. Когда я спросил об этом одну из девушек, она осторожно ответила, что так оно и есть. Вести разговор на эту тему сложно, так как девушки находятся под... http://www.cyberforum.ru/cpp-beginners/thread509086.html
Отлов сочетаний клавиш C++
Как отловить сочетания клавиш? Вариант Key = getch(); Key = getch(); Не катит
C++ Взаимодействие VB и VC++
Взаимодействие VB и VCPP. VB60 и VCPP50. Помогите решить проблемку. Есть VB проект и dll на плюсах. Всё бы хорошо и всё работало, пока не появилась проблемка. Очередная новая функа в dll виснет глушняком! Хэлп! Повторяю, dll писать умею, уже много функций работает, а вот тут засада. Итак. Вот код на VB. Public Sub PaintMap()
C++ Как заставить не затирать окном полученную графику в GDI? http://www.cyberforum.ru/cpp-beginners/thread508809.html
Первый раз столкнулся с GDI и вот никак не могу допереть как заставить не затирать окном полученную графику... Графика выводиться потоком по указателю в диалоговое окно. Насколько я понял, тама надо что-то с OnDraw'ом делать, а вот что, да как не пойму...
C++ Как различить нажатие одноимённых курсорных клавиш (при выключенном NumLock)? 1. В правой части клавиатуры - 2 группы курсорных клавиш: одна - переключается NumLock (цифры/курсор), вторая - всегда курсор. Как различить нажатие одноимённых курсорных клавиш (при выключенном NumLock)? 2. Как узнать, включен ли NumLock? подробнее

Показать сообщение отдельно
palva
2563 / 1785 / 252
Регистрация: 08.06.2007
Сообщений: 6,913
Записей в блоге: 4
03.04.2009, 13:54     Преобразование string в char*
strok.c_str() вернет си-строку, но она будет только для чтения. Если бы у вас было написано

Код
int fun(const char*);
тогда компилятор пропустил бы такой код:

Код
a=fun(strok.c_str());
Только возращаемый указатель долго не живет. Если в strok будут внесены изменения, то есть шанс, что содержимое строки будет перенесено в другое место памяти и указатель устареет. Так что корректнее всего вытаскивать содержимое строки в буфер, и работать уже с буфером.

Код
char *buf = new char[strlen(strtok.c_str())];

strcpy(buf, strtok.c_str());

a=fun(buf);

delete[] buf;
Или воспользоваться функцией strdup с дальнейшим удалением получившейся строки с помощью функции free
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru