powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / cin и ввод с консоли
23 сообщений из 23, страница 1 из 1
cin и ввод с консоли
    #34848190
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, почему не работает конструкция вида
Код: plaintext
1.
2.
3.
4.
5.
6.
int n;
string s;
// С консоли ввожу 123\nQWERTY\n
cin>>n;
getline(cin,s); // Здесь получаем всегда пустую строку
getline(cin,s); // QWERTY попадает сюда.

и как с этим правильно бороться?
Все пускаю на VS2008 beta 2.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848297
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-\ wrote:

> и как с этим правильно бороться?
А если 123 и qwerty через пробел вводить, то что?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848459
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CR LF за два разных символа принимают, ну мелко мягкие руки у них
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848626
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ErVА если 123 и qwerty через пробел вводить, то что?
Если через пробел, то QWERTY выбирается первым getline'м.
Сейчас проверил - поведение у VS2005SP1 такое же.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848645
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blindedCR LF за два разных символа принимают, ну мелко мягкие руки у нихНет, если дальше написать еще один getline, то он работает уже правильно.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848647
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже на то, что оператор >> у cin как-то не так обрабатывает перевод строки.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848654
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересует вопрос - на других компиляторах у кого и как такая конструкция работает?
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848664
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-\Интересует вопрос - на других компиляторах у кого и как такая конструкция работает?

Сто пудовово под линухом будет работать как часы.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848676
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkhСто пудовово под линухом будет работать как часы.
"Будет" не очень интересно. Интересует именно "работает" или "не работает".
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848678
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-\ AkhСто пудовово под линухом будет работать как часы.
"Будет" не очень интересно. Интересует именно "работает" или "не работает".

работает - так сойдет?
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848730
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри наврал. Похоже cin>>n; перевод строки не съедает
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848749
cin :-\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkhСорри наврал. Похоже cin>>n; перевод строки не съедаетИнтересно тогда, почему
Код: plaintext
1.
2.
3.
int n, k;
cin>>n;
cin>>k;
работает правильно?
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848754
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-\ AkhСорри наврал. Похоже cin>>n; перевод строки не съедаетИнтересно тогда, почему
Код: plaintext
1.
2.
3.
int n, k;
cin>>n;
cin>>k;
работает правильно?

Вообщем не надо смешевать оператор >> и getline. Замени в начальном примере.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848761
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на ту же историю, что категорически не рекомендуется смешивать stdio и iostream
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848852
cin :-)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkhВообщем не надо смешевать оператор >> и getline. Замени в начальном примере.
Вот нашел описание проблемы:
http://www.augustcouncil.com/~tgibson/tutorial/iotips.html
Хотелось бы сделать все через >>, но он пробелы считает разделителем и всю строку не дает вычитать.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34848883
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-) AkhВообщем не надо смешевать оператор >> и getline. Замени в начальном примере.
Вот нашел описание проблемы:
http://www.augustcouncil.com/~tgibson/tutorial/iotips.html
Хотелось бы сделать все через >>, но он пробелы считает разделителем и всю строку не дает вычитать.

Читай getline-ами и нужные строчки конверти в числа.

ПС: точно не знаю, но можно поискать: может в iostream можно указывать разделители...
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34849030
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я вот разобрался
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
# include <iostream>
# include <iomanip>
# include <string>

using namespace std;
int main(int argc, const char* const* argv)
{
  int i;
  string str;
  int c;
  ios::fmtflags f = cin.flags();
  if (argc ==  1   || argv[ 1 ][ 0 ] == '1' )
  {
    cin >> i; // после чтения позиция потока на \n
    c = cin.get();  // можете убедиться
    cin.unget();    // вернул в поток
    cin >> str;     // прочитал, но т. к. символ \n разделитель он в строку не попал
    cout << i << endl;
    cout << hex << c << endl;
    cout << str << endl;
  }
  else if (argc ==  2  && argv[ 1 ][ 0 ] == '2')
  {
    cin >> i; // после чтения позиция потока на \n
    c = cin.get(); 
    cin.unget();
    cout << i << endl;
    cout << hex << c << endl;
    getline(cin, str); // прочитал все от позиции в буфере до \n . те пустую строку
    cout << str << endl;      
    cout << str.length() << endl; // строка пуста!!!
    getline(cin, str);
    cout << str << endl;
  }
}

Работает везде вроде одинаково, Так что обвинения в сторону M$ cнимаются
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34849067
cin :-)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переписал с использованием getline и strtol - все работает как часы. Спасибо всем за обсуждение.
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34849394
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh пишет:
> Похоже на ту же историю, что категорически не рекомендуется смешивать
> stdio и iostream


Где это ты там увидал stdio ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34849431
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Akh пишет:
> Похоже на ту же историю, что категорически не рекомендуется смешивать
> stdio и iostream


Где это ты там увидал stdio ?
Posted via ActualForum NNTP Server 1.4

При чем здесь "увидел"?
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34850563
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cin :-\ wrote:

> Интересует вопрос - на других компиляторах у кого и как такая
> конструкция работает?
g++ на GNU/Linux - ведет себя точно так же.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <iostream>
using namespace std;

int main (int argc, char** argv){
    int n;
    string s;
    // С консоли ввожу 123\nQWERTY\n
    cin>>n;
    cout << "n: " << n << endl;
    getline(cin,s); // Здесь получаем всегда пустую строку
    cout << "next string: " << s << endl;
    getline(cin,s); // QWERTY попадает сюда.
    cout << "next string: " << s << endl;
    return  0 ;
}

вывод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
bash- 3 . 1 $ ./a.out
 123 
n:  123 
next string:
qwert
next string: qwert
bash- 3 . 1 $ ./a.out
 123  qwert
n:  123 
next string:  qwert

next string:
bash- 3 . 1 $          
Очевидно, поведение стандартное, и CR/LF тут ни при чем.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34850674
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV

Закон сохранения чтения: Если Мастер Зив начал читать топики целиком, то ЕрВ теперь только начало. ;)
...
Рейтинг: 0 / 0
cin и ввод с консоли
    #34850719
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Очевидно, поведение стандартное, и CR/LF тут ни при чем.
Posted via ActualForum NNTP Server 1.4
Ну так я же принес свои извенения. Я тоже на обоих пробовал
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / cin и ввод с консоли
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]