Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 14:59   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию Правильное преобразование с строки в строку string.

char *sss="blablabla";
string ss(sss);


Тоесть на это компилятор выдаёт
"warning: deprecated conversion from string constant to ‘char*’"

А как же их правильно туда закидывать?
the_deer_one вне форума Ответить с цитированием
Старый 05.04.2010, 15:08   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

[написал глупость, удалил, написал как надо]

char sss[]="blablabla";

Автоматически выделится нужное количество памяти под "blablabla";

Последний раз редактировалось ds.Dante; 05.04.2010 в 15:12.
ds.Dante вне форума Ответить с цитированием
Старый 05.04.2010, 15:09   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Ны дык это одно и то же, и ворнинг в этом случае идентичен.
the_deer_one вне форума Ответить с цитированием
Старый 05.04.2010, 15:21   #4
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Попробуйте:
const char *sss="blablabla";

Последний раз редактировалось Indian; 05.04.2010 в 22:02.
Indian вне форума Ответить с цитированием
Старый 05.04.2010, 21:42   #5
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

char *sss="blablabla";
string ss(sss);

да я бы тоже понаписа тебе по этому кучу вопросов

1 сама функция string вернет некоторую величину а вот куда?
я бы написал это так

char *sss="blablabla";
AnsiString Stroka ="";
Stroka = string (sss);
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 05.04.2010, 22:33   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Assemblerru Посмотреть сообщение
char *sss="blablabla";
string ss(sss);

да я бы тоже понаписа тебе по этому кучу вопросов

1 сама функция string вернет некоторую величину а вот куда?
я бы написал это так

char *sss="blablabla";
AnsiString Stroka ="";
Stroka = string (sss);
Не смущайте человека ) string ss(sss) похоже на вызов функции? string - класс из стандартной библиотеки C++, представляющий строку. Так что тут всё правильно, как указали выше, ошибка в том что нельзя присваивать строковый литерал не константному указателю
netrino вне форума Ответить с цитированием
Старый 06.04.2010, 02:26   #7
profor
 
Регистрация: 04.04.2010
Сообщений: 8
По умолчанию

Код:
 char *sss="blablabla";
 String ss(sss);
 ShowMessage(ss);
Вполне нормально отработал.
profor вне форума Ответить с цитированием
Старый 06.04.2010, 14:34   #8
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

У меня VS тоже не выдаёт предупреждение - видимо, сразу выделяет память под данные. А если написать так:
Код:
char *sss;
sss="blablabla";
то во второй строке sss меняет значение адреса, и начинает указывать на строку "blablabla".
ds.Dante вне форума Ответить с цитированием
Старый 06.04.2010, 17:52   #9
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Предупреждение не выдаёт, но если Вы попытаетесь записать что-нибудь по этому адресу, то получите AV(во всяком случае в последних версиях VisualStudio)
Отсутствие предупреждения, в данном случае - недочёт компилятора. ТС, как я понял, использует gcc - он выдаёт такое предупреждение )

Последний раз редактировалось netrino; 07.04.2010 в 02:27.
netrino вне форума Ответить с цитированием
Старый 06.04.2010, 22:42   #10
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

netrino
Цитата:
ТС, как я понял, использует gcc - он выдаёт такое предупреждение
Ты вычисляешь компилятор по его выводу? 0_0

Assemblerru
Цитата:
1 сама функция string вернет некоторую величину а вот куда?
Это инициализация объекта через конструктор, функция конструктора вернёт эту величину в объект ss. Хотя может это и не функция. Х.З. как это обзывается. Там вроде несколько форм записей есть. Короче я сам себя не понял %).

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.
the_deer_one вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование из 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