char *ch;
string s="help";
ch=s.c_str(); // НЕ РАБОТАЕТ
Как присвоить значение к объявленной переменной?
Код:
Почему не работает?
Ты пытаешься указывать неконстантным указателем на константную память, что может служить причиной случайного изменения данных! Во всяком случае на сколько я понимаю.
Код:
char *ch;
string s="help";
ch=s.c_str(); // НЕ РАБОТАЕТ
string s="help";
ch=s.c_str(); // НЕ РАБОТАЕТ
Потому что массив указателей и строковый литерал это разные типы данных.
Еще Вы пытаетесь работать в С++ и в Си одновременно.
Лучше будет выбрать что-то одно, либо Си тогда работа осуществляется со строка с помощиь функций str* из string.h,
или С++ тогда <string> и возможно <cstring>.
Чтобы ваш кодзаработал нужно
писать так:
Код:
char ch[5]={0};
string s="help";
strcpy(ch, s.c_str());
string s="help";
strcpy(ch, s.c_str());
или так
Код:
char *ch=(char*)new char[5];
string s="help";
strcpy(ch, s.c_str());
delete[] ch;
string s="help";
strcpy(ch, s.c_str());
delete[] ch;
Цитата: oleg_159
Пример:
Почему не работает?
Код:
char *ch;
string s="help";
ch=s.c_str(); // НЕ РАБОТАЕТ
string s="help";
ch=s.c_str(); // НЕ РАБОТАЕТ
Почему не работает?
Потому что учится программировать на форуме не нужно. Ищи на форуме "работа с C-строками" и т.п.
------------
Цитата: like-nix
Потому что массив указателей и строковый литерал это разные типы данных.
Чушь.
В примере нет "массива указателей" и строковые литералы упомянуты не к месту.
Цитата: like-nix
Чтобы ваш кодзаработал нужно
писать так:
Что бы код заработал, достаточно сделать указатель константным:
Код:
const char* ch;
string s="help";
ch=s.c_str();
string s="help";
ch=s.c_str();
Всем спасибо, буду разбираться в различии С и С++