Sprawdzanie czy wprowadzono do konsoli spację

0

Potrzebuję sposobu na to, aby w C++ dowolnej długości ciąg liczbowy zakończony literą poprawnie wczytać(ciąg typu "1 27 313 43 A"). Jak widać pomiędzy poszczególnymi liczbami występuje spacja. Nie wiem za bardzo jak ją "wykryć", bo jestem raczej zielony jeśli chodzi o strumień wejścia w C++ .Mój program może korzystać tylko z biblioteki iostream.

0

Spacja to naturalny separator danych. Próba wprowadzenia ze strumienia do zmiennej typu int, skończy się niepowodzeniem ale dane zostaną w strumieniu. Trzeba tylko je wczytać do znaku i już :-)
W trybie "łopatologicznym":

#include <iostream>

int main() {
    // Zakładam dla ilustracji że nie będzie więcej niż 100 danych.
    int values[100];
    size_t counter = 0;
    char c;

    // Wprowadzanie danych
    while(std::cin >> values[counter]) {
        ++counter;
    }
    std::cin.clear();
    // .. i na końcu litera.
    std::cin >> c;

    // Wyświetlenie danych.
    std::cout << "Wprowadzono następujące dane: ";
    for(size_t i = 0; i < counter; ++i) {
        std::cout << values[i] << ' ';
    }
    std::cout << '\n';
    std::cout << "Na końcu podano literę |" << c << "|\n";
}
0
Mokrowski napisał(a):

Spacja to naturalny separator danych. Próba wprowadzenia ze strumienia do zmiennej typu int, skończy się niepowodzeniem ale dane zostaną w strumieniu. Trzeba tylko je wczytać do znaku i już :-)
W trybie "łopatologicznym":

#include <iostream>

int main() {
    // Zakładam dla ilustracji że nie będzie więcej niż 100 danych.
    int values[100];
    size_t counter = 0;
    char c;

    // Wprowadzanie danych
    while(std::cin >> values[counter]) {
        ++counter;
    }
    // .. i na końcu litera.
    std::cin >> c;

    // Wyświetlenie danych.
    std::cout << "Wprowadzono następujące dane: ";
    for(size_t i = 0; i < counter; ++i) {
        std::cout << values[i] << ' ';
    }
    std::cout << '\n';
    std::cout << "Na końcu podano literę |" << c << "|\n";
}

Wpisuje na koniec ciągu "A", wyświetla mi pustkę w miejsce znaku, a potem gdy dodam do tego kodu warunek if( c == 'A') {coś zrób}, to mi tego nie robi (po skompilowaniu, uruchomieniu i wprowadzeniu tych samych danych).

1 użytkowników online, w tym zalogowanych: 0, gości: 1