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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 83, средняя оценка - 4.87
Akula-II
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 149
03.04.2009, 02:34     Преобразование string в char* #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun(char*);
 
int main() {
  int a;
  string strok;
 
  strok="abc";
  strok+="cde";
 
  a=fun(strok);
  return 0;
}
как в данном случае преобразовать strok в char* ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2009, 02:34     Преобразование string в char*
Посмотрите здесь:

C++ Преобразование string в char
C++ Преобразование string to char
C++ Преобразование Char в System::String
Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) C++
Преобразование string в char* C++
C++ Преобразование string в char*
C++ String в char. Не получается преобразование
Преобразование char в char* или разделить на две строки C++
C++ Строка: чем отличается строки string, char, char*?
Преобразование из string в массив char C++
Преобразование String^ в char* C++
C++ Преобразование слов из string в тип char внутри цикла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2412 / 1634 / 204
Регистрация: 08.06.2007
Сообщений: 6,464
Записей в блоге: 4
03.04.2009, 13:54     Преобразование string в char* #2
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
Yandex
Объявления
03.04.2009, 13:54     Преобразование string в char*
Ответ Создать тему
Опции темы

Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru