Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z getline + ignore

Ostatnio zmodyfikowano 2017-02-24 18:34
Autor Wiadomość
Lich555
Temat założony przez niniejszego użytkownika
Problem z getline + ignore
» 2017-02-23 22:17:22
Witam.
C/C++
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?
P-158227
carlosmay
» 2017-02-23 22:50:43
cin.get( kuferek, 4 ).ignore( 2 ).get( skrytka, 10 );
P-158231
Lich555
Temat założony przez niniejszego użytkownika
» 2017-02-24 18:00:48
Nie da się tego zrobić z pomocą getline?
P-158262
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
.

C/C++
#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();
}
P-158265
michal11
» 2017-02-24 18:34:18
Możesz wczytać getlinem stringa i już ten string wypisywać tak jak ci się podoba.
P-158266
« 1 »
  Strona 1 z 1