Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335

Как проигнорировать последовательность символов в std::cin?

03.03.2014, 10:15. Показов 2405. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два числа, разделенных последовательностью "--:". Если бы это делалось при помощи sscanf:
C++
1
sscanf(input, "%d--:-%d", &a, &b);
Однако std::cin не позволяет такого:
C++
1
std::cin >> a >> "--:-" >> b;
Как же это сделать с std::cin / std::fstream?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2014, 10:15
Ответы с готовыми решениями:

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

Как std::cin считает CTRL + C?
Есть код. #include <string> #include <iostream> #include <exception> #include <limits> int main(int argc, char* argv ) { ...

Как исправить ошибку с std::cin
помогите у меня пропускает последующие вводы если вводишь знак или букву вот код std::cout<<"A: "; ...

12
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.03.2014, 10:30
что мешает просто записать в это в строку и передать в поток уже строку содержащую 2 числа и разделитесь??
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
03.03.2014, 12:19
nexen, вообще ignore
dzrkot,
Цитата Сообщение от dzrkot Посмотреть сообщение
что мешает просто записать в это в строку и передать в поток уже строку содержащую 2 числа и разделитесь
а потом парсить? нафига вешать на кого то задачу с которой спокойно справится std::cin
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 13:42  [ТС]
Кудаив, так а как "справится std::cin" то?
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
03.03.2014, 13:54
Цитата Сообщение от nexen Посмотреть сообщение
Однако std::cin не позволяет такого:
C++
1
std::cin >> a >> "--:-" >> b;
Можно так.
C++
1
2
3
std::cin >> a;
std::cin.ignore( 4 );
std::cin >> b;
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 15:12  [ТС]
Alex5, у меня такое решение не проходит, после "cin >> a" происходит cin.fail()
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 15:18
Цитата Сообщение от nexen Посмотреть сообщение
после "cin >> a" происходит cin.fail()
Если между числами четыре символа, не должно.
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 21:16  [ТС]
alsav22, входная строка в файле такая:
"4--:-17"
C++
1
2
3
4
5
fstream in;
//...
in >> integerA; //in.fail() == true
in.ignore(4);
in >> integerB;
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 21:18
И что? В integerB не 17?
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
03.03.2014, 21:22
nexen, опытным путем
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
04.03.2014, 08:58  [ТС]
Петррр, и всё равно не работает.
Ладно, а что насчет считывания пробелом из входного потока при помощи fstream/cin?
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main() {
    char x, y, z;
    cin >> x >> y >> z;
    cout << "x:" <<  x << "\ny:" <<  y << "\nz:" << z << endl << "works?";
    return 0;
}
Вход :
"4 b"
Пробелы просто игнорируются, хотя считывается char
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.03.2014, 12:06
Цитата Сообщение от nexen Посмотреть сообщение
Пробелы просто игнорируются, хотя считывается char
Чтобы не игнорировать пробелы, можно написать
C++
1
2
    char x, y;
    cin >> noskipws >> x >> y; /* не пропускать пробелы */
Или можно использовать функцию get() :
C++
1
2
3
    char x, y;
    x = cin.get();
    y = cin.get();
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.03.2014, 15:44
Цитата Сообщение от nexen Посмотреть сообщение
и всё равно не работает.
Что конкретно не работает? На вопрос не ответили(9 пост). Всё работает. Если у вас не работает, значит не так что-то делаете.

Добавлено через 2 минуты
Цитата Сообщение от nexen Посмотреть сообщение
Вход :
"4 b"
Пробелы просто игнорируются, хотя считывается char
Может откроете секрет, что нужно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2014, 15:44
Помогаю со студенческими работами здесь

Как выполнять std::cin в LOOP ?
Хочу сделать что то вроде командной строки. 1ый раз читает и выполняет нормально, но следующий раз вижу что ждет от меня ввода, но ни...

Не работает std::cout || std::cin
#include &quot;Account.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using std::cout; Account :: Account(int startBalance) { ...

Как заставить std::cin распознавать префиксы?
Здравствуйте, народ. Вы не знаете как заставить cin распознавать префиксы? типо: Ввод: 10 Вывод(в десятичном виде): 10 Ввод: 010 ...

Как подключить метод std::cin.clear в qt
Решил немного вернуться к консоли, так как каша в голове, и многое из нее повылетало азов, язык изучал на wisual studio под виндой, там...

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru