Как считать строку с пробелами c
khactrung1912 → How to calculator a^b module the prime
sarthakjoleya → Need Help for my Sorting Visualizer
Pyqe → Codeforces Round #902 (Div. 1, Div. 2, based on COMPFEST 15 — Final Round) Editorial
shah2020 → Help in Tree Problem
chenjb → Rescheduling of World Finals 22&23
![]()
ouuan → Are there any learning materials of polynomial minimum cost flow algorithms?
unseen2 → help me out with this combinatrics problem.
Imakf → Codeforces Round 906 Editorial
whynesspower → [URGENT] Codeforces need anti-scrapping
GenGenM → Andvikpro тупой
one_autum_leaf → Find the number of rectangles of same color in a matrix
![]()
aropan → Codeforces Beta Round #92 — Разбор
_Firdavs_Aminov_ → Dark theme Codeforces
Imakf → Codeforces Round 906 (Div. 1, Div. 2)
![]()
MikeMirzayanov → Часто задаваемые вопросы
![]()
Vladithur → Разбор Codeforces Round #769
I_lOVE_ROMAN → Time Complexity Calculation
-kirito- → Invitation to TheForces #25 (5^2-Forces, TheForces-Rated, Prizes!)
purp4ever → Teams Qualified for Africa and Arab Collegiate Programming Championship — ACPC 2023 (+teens)
diskoteka → Codeforces Round #878 (Div.3) Разбор
atcoder_official → Panasonic Programming Contest 2023(AtCoder Beginner Contest 326) Announcement
wittywho → CPH causing Compilation error but code runs fine on terminal
whynesspower → Reverse check the questions: ChatGPT
stdfloat → Is CF enough for IZHO, IOI?
127.0.0.1 → Codeforces Round 907 (Div. 2)
Ввод в языке C++ через cin
Для считывания данных со стандартного ввода используется объект cin , также определенных в заголовочном файле iostream . Его использование похоже на использование объекта cout для вывода. Например, для считывания двух переменных a и b нужно дать команду:
Также как и в случае с cout , нет нужды беспокоиться о типах данных — можно считывать целые и действительные числа, символы и строки.
Особенности считывания символов
Пусть дано время в формате HH:MM. Считать его можно следующим образом:
int h, m;
char c;
cin >> h >> c >> m;
То есть сначала считывается число, затем — символ, затем — число.
При этом при считывании символа пропускаются пробельные символы (пробелы и концы строк) и считывается следующий непробельный символ. Например, если при запуске приведенного выше кода ввести «12 34», то переменная h станет равна 12, переменная с — ‘3’, а переменная m — 4.
Если установить манипулятор noskipws :
то при считывании символов пробельные символы не будут пропускаться. Для восстановления режима пропуска пробельных символов используется манипулятор skipws :
Особенности считывания строк
Считывание строк при помощи cin >> s , где s — объект класса string или C-строка приведет к считыванию строки из непробельных символов, при этом пробельные символы пропускаются.Использовать манипулятор noskipws при чтении строк не следует.
Строку целиком до конца строки, вместе с пробельными символами можно считать следующим образом:
Отметим следующую особенность такого считывания. Пусть входные данные заданы так — сначала число строк n, затем — n строк, возможно, содержащие пробелы. Требуется считать данные строки и сохранить их в массиве строк.
Правильное решение будет таким:
int n;
string s, A[100];
cin >> n;
getline(cin, s);
for (int i = 0; i < n; ++i)
getline(cin, A[i]);
Здесь нужно обратить внимание на «лишний» вызов getline после считывания числа n. Дело в том, что cin >> n не считывает конец строки из потока, поэтому последующий вызов getline вернет пустую строку (но зато считает конец строки), поэтому нужно сделать один «холостой» вызов getline перед считыванием всех остальных строк.
Значение, возвращаемое при считывании
Для проверки успешности считывания можно преобразовать значение, возвращаемое операцией считывания к типу bool . Например, следующим образом:
bool is_correct;
int a;
is_correct = (cin >> a);
Если значение переменной is_correct будет true , то считывание было успешно, иначе — нет.
Вместо записи результата в логическую переменную, можно непосредственно использовать его, например, в условной инструкции. Вот так, например, можно проверять, что на вход программе подано два числа через двоеточие:
int h, m;
char c;
if (cin >> noskipws >> h >> c >> m)
if (c == ‘:’) .
>
Похожее использование — чтение текста «по словам», с обработкой каждого слова:
string word;
while (cin >> word)
// Обработать слово в переменной word
>
Или считывание текста по строкам:
string line;
while (getline(cin, s))
// Обработать строку в переменной line
>
Как ввести в cin строки с пробелами в С++
По умолчанию cin (стандартный ввод) в С++ считывает данные до первого пробела. Рассмотрим способы, с помощью которых мы можем передать через стандартный ввод строку, содержащую один или нескольких пробелов, чтобы эта строка могла быть присвоена в качестве значения переменной в программе.
cin по умолчанию пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Вы можете либо изменить его поведение, либо использовать немного другой механизм.
Рассмотрим небольшую программу, которая просит пользователя ввести имя и после этого сразу же отображает введённую строку на экране. Приведённый код работает так, как ожидается, если вводимые данные не содержат пробелов:
#include using namespace std; int main() < string line; cout > line; cout
Для запуска этого кода сохраните его в файл test.cpp и скомпилируйте:
g++ test.cpp
Запуск скомпилированного файла:
./a.out
Попробуем ввести строку с пробелами:
Как можно увидеть, из введённой строки «Алексей Милосердов», сохранилось только часть до пробела, то есть «Алексей».
Чтение строки с getline
getline читает символы из входного потока и помещает их в строку — именно это нам и нужно. getline (как и использование строки), требует указать заголовок #include . Отредактируем наш код:
#include #include using namespace std; int main()
Как можно убедиться, теперь строка считалась полностью, вместе с пробелами.
Изменение поведения cin с помощью noskipws
Как мы уже выяснили, по умолчанию cin пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Чтобы изменить его поведение, используйте манипулятор noskipws следующим образом:
cin >> noskipws >> line;
noskipws включает пропуск начальных пробелов с помощью форматированных функций ввода (по умолчанию включено). Не влияет на вывод.
То есть noskipws не поможет нам передать через стандартный ввод строки, содержащие в себе пробелы, кроме тех случаев, когда пробелы стоят в начале строки.
Чтобы стало понятнее, рассмотрим следующий код:
#include #include using namespace std; int main() < char c1, c2, c3; istringstream("a b c") >> c1 >> c2 >> c3; cout > noskipws >> c1 >> c2 >> c3; cout
В результате работы этого кода будет выведено:
Поведение по умолчанию: c1 = a c2 = b c3 = c Поведение с noskipws: c1 = a c2 = c3 = b
Смотрите также онлайн учебник «Основы С++».
Ввод строки с пробелами
Ввод строки с пробелами
Нужна помощь!Как сделать так,чтобы после нажатия на пробел программа не заканчивала ввод в строку,а.
Ввод строки с пробелами
Собственно вот текст, не хочет никакими функциями принимать строку stud.fio с пробелами, испробовал.
Ввод строки с пробелами
нижеприведенный код получает строку до первого пробела, а нужно получать с учетом всех символов.
Ввод строки с пробелами
Всё, сдаюсь. Ребят, подскажите, пожалуйста, как строку с пробелами считать int main ()
Нарушитель
1169 / 856 / 251
Регистрация: 30.06.2015
Сообщений: 4,461
Записей в блоге: 50
Вместо scanf использовать специальную функцию, например gets_s
Регистрация: 23.07.2014
Сообщений: 34
CoderHuligan, Для одной книги работает с gets(), но если вводить их циклически, то имя второй книги не дает ввести.
![]()
![]()
![]()
![]()
12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521
Сообщение от Elektronikerv 
но если вводить их циклически, то имя второй книги не дает ввести.
после ввода числа \n в потоке остаётся
Регистрация: 23.07.2014
Сообщений: 34
easybudda, вы про строку 17? Даже если ее убрать-ничего не миняется. Или я не так понял?
![]()
![]()
![]()
![]()
12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521
Сообщение от Elektronikerv 
вы про строку 17?
Нет, я про поток stdin (из которого Вы пользовательский ввод читаете)
Регистрация: 23.07.2014
Сообщений: 34
Ну а как тогда сделать?
Добавлено через 59 минут
А как, например, пробелы заменят на символ подчеркивания «_»?
Пробывал так, нечего не заменяет
1 2 3 4 5 6 7
void ChangeSpace(char *string){ while(*string !='\0'){ if(*string ==' ') *string = '_'; string++; } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Ввод строки с пробелами
Мне необходимо ввести несколько слов в строку, использую getline, но в консоле когда в меню.

Ввод строки с пробелами
Я искал насчет этого в поиске и прочитал про get gets getline fgets, так и не понял. Кто то может.
Ввод строки с пробелами
Знающие, помогите решить такую проблему. Надо составить маленькую программку, представление.
Ввод строки char с пробелами
Всем доброго дня. Подскажите плз, У меня есть указатель char *str как ввести в него строку с.
Ввод строки с пробелами произвольной длины
Помогите, пожалуйста. Нужно ввести строку произвольной длины с пробелами и различными символами. .
Ввод строки с пробелами в поле char
Это часть файла header.h; В программе в поле Name нужно ввести ФИО с пробелами, но программа выдает.