Problem z getline + ignore
Ostatnio zmodyfikowano 2017-02-24 18:34
Lich555 Temat założony przez niniejszego użytkownika |
Problem z getline + ignore » 2017-02-23 22:17:22 Witam. int main() { char kuferek[ 10 ], skrytka[ 10 ]; cout << "Napisz okolo 10 znakow: "; cin.getline( kuferek, 4 ).ignore( 2 ).getline( skrytka, 10 ); cout << "\nW kuferku jest: " << kuferek << ", w skrytce jest: " << skrytka << "\na 2 znaki zignorowalem" << endl; return 0; }
Mam taki kod. Chciałem taki efekt, że jak wpisze jakiś długi ciąg to wypisze mi 3 znaki, zignoruje 2 i dalej będzie kontynuował wypisywanie tego ciągu. Kiedy wpisuje coś, to wypisuje mi 3 znaki, a całej reszty nie widzę. Jak osiągnąć pożądany przeze mnie rezultat? |
|
carlosmay |
» 2017-02-23 22:50:43 cin.get( kuferek, 4 ).ignore( 2 ).get( skrytka, 10 ); |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2017-02-24 18:00:48 Nie da się tego zrobić z pomocą getline? |
|
carlosmay |
» 2017-02-24 18:31:20 std::cin.getline() odrzuca wszystko to co nie zostało pobrane z bufora strumienia, więc nie da się wprowadzić jednego długiego łańcucha znaków i rozbić go na dwa wywołania std::cin.getline . #include <iostream>
void eatChars() { char ch; std::cout << "Pozostale znaki w buforze: "; while( std::cin.get( ch ) && ch != '\n' ) { std::cout << ch; } std::cout << '\n'; }
int main() { char tab[ 10 ]; std::cin.get( tab, 5 ); eatChars(); char tab2[ 10 ]; std::cin.getline( tab2, 5 ); eatChars(); } |
|
michal11 |
» 2017-02-24 18:34:18 Możesz wczytać getlinem stringa i już ten string wypisywać tak jak ci się podoba. |
|
« 1 » |