Переменная типа char в C++ для начинающих и как с ней работать
При написании прошлой статьи по обработке файла мною была использована переменная типа char
У меня как у начинающего изучение сразу возникли некоторые трудности обработки этой переменной. Самый первый вопрос передо мной встал так – а как вывести переменную char на экран. Почему-то при поиске я натыкался на подробное описание переменной и какие-то мудренные примеры обработки. Хотя меня первым делом интересовала информация, как в C++ вывести на экран переменную, содержащую, например, только одну букву.
Для присвоения переменной типа char какого-то значения внутри кода программы используют знак умножения * – этим переменная типа char отличается от численных значений.
Например, мне нужно в коде программы указать, что на каком-то этапе работы программы, переменная s1 должна принять значение Буква y. (Именно буква)
Я стал пробовать работать s1 как с обычными переменными и написал где-то там внутри кода:
char s1;
s1=”y”;
На что при попытке выполнить программу – мне было объявленно, что в этом месте кода ошибка.
Я стал рыскать, что я делаю не так и нашел много разнообразного материала, но всё почему-то было не то. Возможно я не умею искать, но найденные примеры были очень разнообразны
Примеры с указателями, различными преобразованиями и хитрыми функциями
Такие примеры мне не нравятся. Простота – вот то, что мне нужно.
Оказалось, что всё очень просто:
Привожу пример кода, выводящий на экран введенную букву y
#include
int main()
clrscr(); //Очищаем экран
char s1; //Объявляем переменную s1
s1[0]=*”y” //Присвоение переменной s1 значения
coutВыводим букву y на экран
return 0;
>
Настолько всё оказалось просто, перед знаком = нужно было поставить знак * и нужнобыло объявить номер элемента (ноль соответствет первому)
Но переменную char чаще используют как массив каких-то символьных значений. Знакомство с простым массивом было изложено в статье
Одномерный массив в C++ для начинающих
Для работы с массивами часто необходимо использовать циклы. В прошлой статье был использован цикл for. Про ккотрый описано в статье
Цикл for в С++ для начинающих
Т.е. часто символьную переменную объявляют как набор одинарных символов. Даже строковая переменная, о которой я когда-нибудь тоже напишу – это не более чем набор значений типа char
Первоначально лучше изучить как работать и как использовать именно символьную переменную типа char, а потом уже изучать строковую. Посимвольное считывание из каких-то источников очень часто используется в программировании, поэтому это важный этап.
Есть много технической литературы, где правильно и глубоко описывается принцип работы и главная идея переменной char , но я считаю, углубляться пока не особо нужно. Но важно знать как при необходимости присваивать значения переменной.
Второй вопрос передо мной встал как – а как обнулить переменную типа char в C++ ?, при поиске я почему-то натыкался на исходник целой функции, которая была написана не самым понятным для новичков языком. На этот вопрос я легко смог ответить, когда понял как такой переменной присваивать значения.
т.е. Если у нас переменная s1 равна Буква y, но нам нужно её очистить, то мы это делаем так
s1=*””
Ставим знак равенства, ставим звездочку и ставим две двойные кавычки подряд
Две двойные кавычки подряд соответсвтуют обнулению значения в символьных переменных.
Так как переменную типа char часто используют как массив, то определяют количество возможных значений.
Например, код
int main()
char s1 [100]; //Объявляем переменную s1
return 0;
>
Почти равносилен тому, что мы объявили строку, состоящую из 101 символа.
Если не понимаете почему 101, а не 100 – лучше изучайте массивы. Напоминаю пример простого массива приведен в одной из прошлых статей Одномерный массив в C++ для начинающих
Есть небольшой нюанс при обработке массива. Так как для обработки мы используем цикл, то если объявленный нами символьный Массив типа char в 101 символ, содержит, например, 5 символов, то неразумно использовать цикл пока мы не достигнем конца нашего массива. – Потомучто если в программе будут тысячи таких операций – это существенно замедлит скорость работы программы
При объявлении любой переменной, переменной отводится какой-то участок памяти и память эта может уже содержать какое-то значение. Это значение не обязательно пустое или ноль и по умолчанию очень легко присвоится нашей переменной.
Поэтому любые переменные при объявлении правильно обнулять.
Для того, чтобы обнулить наш символьный массив s1 типа Char на языке программирования C++, после его объявления мы пишем такой код
===============
Программа обнуления массива типа char
int main()
char s1 [100]; //Объявляем переменную s1
(for int i=0;i <=100;i++) s1[i]=*””;
return 0;
>
==============
Преимущество этого кода в том, что теперь мы можем определить окончание заполненных ячеек массива, независимо от того, сколько их объявлено. Для этого мы должны указывать условие, что если ячейка пустая, то значит можно прекращать работу с этим массивом и перехоить к дальнейшим действиям. Соответственно количество операций и нагрузка на процессор существенно уменьшаются.
Как присвоить переменной char значение слова ?
Здравствуйте ребята !! Я новичок в этом сайте , и даже новый в c++ . сегодня начал c++ . я знаю PHP , и решил учить c++ . и мне очень понравилось , есть в общем схожесть с PHP . но тут у меня проблемка : как присвоить переменной целое слово или предложение ? например , вот скрипт . если я напишу там свое имя — Vaga , то программа выведет букву V . в чем дело ? помогите новичку , спасибо
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include using namespace std; int main() { char td; cout "Hello! \n "; cout "Please enter your name : "; cin >> td ; cout "you entered this name: " td "\n"; system("PAUSE >> void"); }
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как присвоить переменной типа char значение скобки
Привет. Столкнулся с проблемой что не могу присвоють переменной типа char значение скобки (правой.
Как переменной Char присвоить значение целого текста?
Пример текста: "Верьте аль не верьте , а жил на белом свете Федот-Стрелец Удалой молодец. "
Как переменной Char присвоить значение целого текста полученого из файла?
файл input.txt текст "ой мама не горюй" использовать ifstream
Как присвоить к новой char переменной другую char переменную с указателем
Как присвоить к новой char переменной другую char переменную с указателем #include<iostream>.
Как присвоить значение одного из элементов массива типа char переменной типа int?
С++ начал буквально только что так что буду благодарен за терпение и понимание ) Сразу оговорюсь.
Заблокирован
Сообщение от VaGa
Здравствуйте ребята !! Я новичок в этом сайте , и даже новый в c++ . сегодня начал c++ . я знаю PHP , и решил учить c++ . и мне очень понравилось , есть в общем схожесть с PHP . но тут у меня проблемка : как присвоить переменной целое слово или предложение ? например , вот скрипт . если я напишу там свое имя — Vaga , то программа выведет букву V . в чем дело ? помогите новичку , спасибо
1 2 3 4 5 6 7 8 9 10 11 12
#include using namespace std; int main() { char text[1024] = {0};//Áóôôåð äëÿ òåêñòà cout"Enter text (less than 1024 chars) : "; cin.getline(text,1023);//Ââîä òåêñòà ñ ïðîáåëàìè cout"Your input : "textendl; system("pause"); return 0; }
Как присвоить переменной char значение слова
@avp Вообще-то, это не стандартная функция. Это POSIX функция. Ей можно пользоваться, но чтобы код компилировался, нужно либо задать макрообъявление, либо опцию компилятора.
12 дек 2016 в 21:47
Ну, Вы даете. И с каких это пор POSIX не стандарт? Вообще, если в gnu есть, то можно пользоваться. А если где-то ее (или какой другой) и не будет, значит самому надо там реализовать.
12 дек 2016 в 22:05
@avp POSIX — не указ C стандарту.:)
12 дек 2016 в 22:13
POSIX — не указ C стандарту.:) О Господи. А вот это : «POSIX (англ. portable operating system interface — переносимый интерфейс операционных систем) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. » — ничего не значит? Стандарт, в котором оговариваются БИБЛИОТЕКИ С не указ для БИБЛИОТЕК С ?!
13 дек 2016 в 2:43
- c
- массивы
- указатели
- строковый-литерал
Помогите разобраться с char и string в c++
Я примерно понимаю, как работают эти типы данных, если их значения записаны сразу в программе, но как вводить их в процессе выполнения?
21st Apr 2021, 12:09 PM
Хабиб Темури
char — число, занимающее 1 байт (8 битов) и интерпретирущееся компилятором C++ и частью других компиляторов/интерпретаторов в кодировке ASCII/другой стандартной. string — класс, который базируется на динамической версии массива char/wchar_t. В библиотеке C++ iostream есть объект файла cin, который поддерживает все встроеные (не используя библиотеки) типы данных, исключая массивы, указатели и, возможно, какие-то типы. При char оператор >> заставляет cin прочитать один символ и присвоить значение переменной. При string оператор >> заставляет cin читать ввод до пробела и присвоить значение переменной. Для того, чтобы читать строку до новой строки/конца файла, лучше использовать метод cin.getline (первый параметр — объект string или массив/указатель на char/wchar_t, второй — максимальная длина строки, третий (опциональный) — символ, до которого читать (по умолчанию это символ новой строки)).
21st Apr 2021, 12:49 PM
#0009e7 [get]
Often have questions like this?
Learn more efficiently, for free: