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

Как объявить строковую переменную? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.79
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
27.09.2011, 12:47     Как объявить строковую переменную? #1
которой в процессе выполнения программы будут присваиваться разные значения. Вот это:
C++
1
char* a = "VasiaPupkin"
компилятор объявляет устаревшим: warning: deprecated conversion from string constant to 'char'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
28.09.2011, 10:59  [ТС]     Как объявить строковую переменную? #21
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

PS:Больше помогать вам не буду....

Юра, я Вас чем-то обидел? Извините.
А по теме: предлагаемый Вами код приходится полностью перерабатывать под линь, а char* = (char*)"VasiaPupkin" возвращает ту же ошибку, что и в ТС (просто поясняю)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2011, 12:13     Как объявить строковую переменную?
Еще ссылки по теме:

Как объявить 10 значную переменную такой как 9876543210 C++
C++ Как объявить булеву переменную
Как определить строковую переменную? C++

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

Или воспользуйтесь поиском по форуму:
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 12:13     Как объявить строковую переменную? #22
-=ЮрА=-, как уже выше было упомянуто-изменение строкового литерала-неопределённое поведение.(в стандарте это написано)
Неопределённое поведение, может совпадать с тем поведением которое ожидает пользователь.
А может и не совпадать(поведение не определено).

1.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
    char a[] = "VasiaPupkin";
    a[3] = '!';//Всё ок
    const char * b = "VasiaPupkin";
    b[3] = '!';//Ну да надеемся))) const в жизни не позволит этого сделать
    return 0;
}
и даже так нельзя делать:
C++
1
    *((char*)&b[3]) = '!';
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char a[] = "VasiaPupkin";
    std::cout<<a<<"\r\n";
    a[3] = '!';//Всё ок
    std::cout<<a<<"\r\n";
 
    char * c = (char *)"VasiaPupkin";
    std::cout<<c<<"\r\n";
    c[3] = '!';//И вот так НЕЛЬЗЯ делать
    std::cout<<c<<"\r\n";
    getch();
    return 0;
}
3.
Вот так тоже НЕЛЬЗЯ делать:
C++
1
2
3
char * s = (char *)"русский";
CharToOem(s,s);//нельзя, т.к. попытка изменить строковой литерал
printf("%s",s);
Yandex
Объявления
28.09.2011, 12:13     Как объявить строковую переменную?
Ответ Создать тему
Опции темы

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