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

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

Восстановить пароль Регистрация
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 10:15     Как проигнорировать последовательность символов в std::cin? #1
Есть два числа, разделенных последовательностью "--:". Если бы это делалось при помощи sscanf:
C++
1
sscanf(input, "%d--:-%d", &a, &b);
Однако std::cin не позволяет такого:
C++
1
std::cin >> a >> "--:-" >> b;
Как же это сделать с std::cin / std::fstream?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 10:15     Как проигнорировать последовательность символов в std::cin?
Посмотрите здесь:

Как исправить ошибку с std::cin C++
Из scanf в std::cin C++
C++ std::cin
C++ std::cin, eof не всегда принимается как признак конца файла
C++ Не работает std::cout || std::cin
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
03.03.2014, 10:30     Как проигнорировать последовательность символов в std::cin? #2
что мешает просто записать в это в строку и передать в поток уже строку содержащую 2 числа и разделитесь??
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
03.03.2014, 12:19     Как проигнорировать последовательность символов в std::cin? #3
nexen, вообще ignore
dzrkot,
Цитата Сообщение от dzrkot Посмотреть сообщение
что мешает просто записать в это в строку и передать в поток уже строку содержащую 2 числа и разделитесь
а потом парсить? нафига вешать на кого то задачу с которой спокойно справится std::cin
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 13:42  [ТС]     Как проигнорировать последовательность символов в std::cin? #4
Кудаив, так а как "справится std::cin" то?
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
03.03.2014, 13:54     Как проигнорировать последовательность символов в std::cin? #5
Цитата Сообщение от nexen Посмотреть сообщение
Однако std::cin не позволяет такого:
C++
1
std::cin >> a >> "--:-" >> b;
Можно так.
C++
1
2
3
std::cin >> a;
std::cin.ignore( 4 );
std::cin >> b;
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 15:12  [ТС]     Как проигнорировать последовательность символов в std::cin? #6
Alex5, у меня такое решение не проходит, после "cin >> a" происходит cin.fail()
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 15:18     Как проигнорировать последовательность символов в std::cin? #7
Цитата Сообщение от nexen Посмотреть сообщение
после "cin >> a" происходит cin.fail()
Если между числами четыре символа, не должно.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.03.2014, 21:16  [ТС]     Как проигнорировать последовательность символов в std::cin? #8
alsav22, входная строка в файле такая:
"4--:-17"
C++
1
2
3
4
5
fstream in;
//...
in >> integerA; //in.fail() == true
in.ignore(4);
in >> integerB;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 21:18     Как проигнорировать последовательность символов в std::cin? #9
И что? В integerB не 17?
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
03.03.2014, 21:22     Как проигнорировать последовательность символов в std::cin? #10
nexen, опытным путем
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
04.03.2014, 08:58  [ТС]     Как проигнорировать последовательность символов в std::cin? #11
Петррр, и всё равно не работает.
Ладно, а что насчет считывания пробелом из входного потока при помощи 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
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
04.03.2014, 12:06     Как проигнорировать последовательность символов в std::cin? #12
Цитата Сообщение от 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();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 15:44     Как проигнорировать последовательность символов в std::cin?
Еще ссылки по теме:

Как можно считывать из строки (std::string или char*) данные при помощи cin C++
C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
C++ Как выполнять std::cin в LOOP ?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.03.2014, 15:44     Как проигнорировать последовательность символов в std::cin? #13
Цитата Сообщение от nexen Посмотреть сообщение
и всё равно не работает.
Что конкретно не работает? На вопрос не ответили(9 пост). Всё работает. Если у вас не работает, значит не так что-то делаете.

Добавлено через 2 минуты
Цитата Сообщение от nexen Посмотреть сообщение
Вход :
"4 b"
Пробелы просто игнорируются, хотя считывается char
Может откроете секрет, что нужно сделать?
Yandex
Объявления
04.03.2014, 15:44     Как проигнорировать последовательность символов в std::cin?
Ответ Создать тему
Опции темы

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