С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.79
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
#1

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

27.09.2011, 12:47. Просмотров 5153. Ответов 21
Метки нет (Все метки)

которой в процессе выполнения программы будут присваиваться разные значения. Вот это:
C++
1
char* a = "VasiaPupkin"
компилятор объявляет устаревшим: warning: deprecated conversion from string constant to 'char'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 12:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как объявить строковую переменную? (C++):

Как определить строковую переменную? - C++
Првиет всем! Ситуация такая.Мне нужно что бы введенная строка загрузилась в переменную.А далее эта переменная была переданна в...

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

Как в классе записать возвращаемую строковую переменную? - C++
как в классе записать возвращаемую строковую переменную? программа работает но ругается warning class_string.h #include...

Как объявить переменную? - C++
curl_easy_setopt(curl, CURLOPT_URL, url); Как объявить переменную? Этот код находится внутри класса.

Как объявить переменную глобально? - C++
здравствуйте, в книге шилдта есть такой код #include <iostream> using namespace std; void func1(); void func2(); int count;...

Как объявить булеву переменную - C++
с++ 6.0 - Выражения _Bool Программирую на с++ 6.0 и немогу обьявить переменную типа _Bool b = true; помогите разобраться.

21
rangerx
27.09.2011, 19:49     Как объявить строковую переменную?
  #16

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- и что из этого?
Чем это отлично от doubla val = 5;val = 3;
см. здесь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
никаких UB не наблюдалось....
http://codepad.org/2GYrF77e

0
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
27.09.2011, 22:44  [ТС] #17
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Voroshek, вот так сделайте char a[] = "VasiaPupkin"; - этим вы объявили стрковую переменную в 12 символов char a[12]; - аналог
=ЮрА=, спасибо, конечно, но я не зря использовал указатель. Если задать переменную в 12 символов, я не смогу в дальнейшем присвоить ей, например, "MoishaRabinovich" (я уточнял это в сообщении №3)
Да, если это важно, пишу на с++, ось Линукс Минт, собираю в консоли.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
27.09.2011, 23:20 #18
Цитата Сообщение от Voroshek Посмотреть сообщение
пишу на с++
И что же вас ограничивает в использовании std::string, который динамически изменяет свой размер (абсолютно прозрачно для программиста) и имеет разные вкусности в виде, например, различных перегруженных операторов?
1
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
27.09.2011, 23:21  [ТС] #19
Угу, разобрался, спасибо
0
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 09:43 #20
Цитата Сообщение от Voroshek Посмотреть сообщение
=ЮрА=, спасибо, конечно, но я не зря использовал указатель. Если задать переменную в 12 символов, я не смогу в дальнейшем присвоить ей, например, "MoishaRabinovich" (я уточнял это в сообщении №3)
Да, если это важно, пишу на с++, ось Линукс Минт, собираю в консоли.
char * a = (char *)"Vasia pupkin";
a = (char *)"MoishaRabinovich";

На досуге скомпилируйте и запустите код, а потом пишите что вы можете сделать а что нет
Код С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char * c = (char *)"VasiaPupkin";
    std::cout<<c<<"\r\n";
    c = (char *)"Masha Malinovich";
    std::cout<<c<<"\r\n";
    getch();
    return 0;
}

Не по теме:

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

0
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
28.09.2011, 10:59  [ТС] #21
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

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

Юра, я Вас чем-то обидел? Извините.
А по теме: предлагаемый Вами код приходится полностью перерабатывать под линь, а char* = (char*)"VasiaPupkin" возвращает ту же ошибку, что и в ТС (просто поясняю)
0
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
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);
0
28.09.2011, 12:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2011, 12:13
Привет! Вот еще темы с ответами:

Как объявить переменную в классе? - C++
Доброго времени суток. Как правильно объявить переменную в private: Делаю так: private: std::vector&lt;double&gt;* parameters = new...

Как объявить переменную AProperties в с++ - C++
Подскажите пожалуйста как объявить переменную AProperties в с++? procedure TForm1.FormCreate(Sender: TObject); var AProperties:...

Как объявить глобальную переменную в Dev-C++ 4.9.9.2? - C++
Попробовал написать из справочника по С++ такую программу: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void...

Не могу вывести строковую переменную - C++
Привет :) Писал программу, обнаружил что не могу вывести строковую переменную таким образом: int b=0; cin&gt;&gt;b; string a; if...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.