|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.04.2010, 14:59 | #1 |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
Правильное преобразование с строки в строку string.
char *sss="blablabla";
string ss(sss); Тоесть на это компилятор выдаёт "warning: deprecated conversion from string constant to ‘char*’" А как же их правильно туда закидывать? |
05.04.2010, 15:08 | #2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
[написал глупость, удалил, написал как надо]
char sss[]="blablabla"; Автоматически выделится нужное количество памяти под "blablabla"; Последний раз редактировалось ds.Dante; 05.04.2010 в 15:12. |
05.04.2010, 15:09 | #3 |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
Ны дык это одно и то же, и ворнинг в этом случае идентичен.
|
05.04.2010, 15:21 | #4 |
Форумчанин
Регистрация: 23.02.2010
Сообщений: 107
|
Попробуйте:
const char *sss="blablabla"; Последний раз редактировалось Indian; 05.04.2010 в 22:02. |
05.04.2010, 21:42 | #5 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
char *sss="blablabla";
string ss(sss); да я бы тоже понаписа тебе по этому кучу вопросов 1 сама функция string вернет некоторую величину а вот куда? я бы написал это так char *sss="blablabla"; AnsiString Stroka =""; Stroka = string (sss);
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
05.04.2010, 22:33 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Не смущайте человека ) string ss(sss) похоже на вызов функции? string - класс из стандартной библиотеки C++, представляющий строку. Так что тут всё правильно, как указали выше, ошибка в том что нельзя присваивать строковый литерал не константному указателю
|
06.04.2010, 02:26 | #7 |
Регистрация: 04.04.2010
Сообщений: 8
|
Код:
|
06.04.2010, 14:34 | #8 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
У меня VS тоже не выдаёт предупреждение - видимо, сразу выделяет память под данные. А если написать так:
Код:
|
06.04.2010, 17:52 | #9 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Предупреждение не выдаёт, но если Вы попытаетесь записать что-нибудь по этому адресу, то получите AV(во всяком случае в последних версиях VisualStudio)
Отсутствие предупреждения, в данном случае - недочёт компилятора. ТС, как я понял, использует gcc - он выдаёт такое предупреждение ) Последний раз редактировалось netrino; 07.04.2010 в 02:27. |
06.04.2010, 22:42 | #10 | |||
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
netrino
Цитата:
Assemblerru Цитата:
profor Цитата:
Вот так к примеру уже можно и писать и менять. char bb[]="breasts"; char *ss=bb; ss='B'; cout<<ss<<endl; 1) Это, самое. Я правильно понял, что отличие в присваивании адресной переменной адреса строки в текущем случае по сравнению с первым "char *sss="blablabla";", за исключением того, что там "блабла", а тут "сиськи", является то, что там объект константный а здесь нормальный? 2) Вообще в чём отличие char* строк от char[] строк. Когда те и те юзать? В книжке об этом не написано. Даже в определении функции написано, что нужны char* . А засунуть можно и char[]. И даже компилятор бурчать не будет. 3) Так можно как-нибудь char* строке передать одним действием адрес нормальной изменяемой строки? Последний раз редактировалось the_deer_one; 06.04.2010 в 22:50. |
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Преобразование из System::String в wchar_t* | AxenicX | Общие вопросы .NET | 2 | 16.02.2010 22:31 |
Как получить адрес String строки или преобразовать String | madboy4ik | Общие вопросы по Java, Java SE, Kotlin | 6 | 15.01.2010 11:57 |
Преобразование Char string | SL1CK | Общие вопросы Delphi | 8 | 11.01.2010 22:35 |
Преобразование String в OleVariant | vg169 | Общие вопросы Delphi | 8 | 15.07.2009 13:09 |
Преобразование int в String^ в С++ | Mixasik | Помощь студентам | 1 | 21.06.2009 18:57 |