0Pricing
C++ Academy · Lekcja

Prawidłowe używanie std::cin i std::cout

Proszę wykonywać wejście i wyjście strumieniowe za pomocą standardowych strumieni oraz unikać typowych pułapek.

Prawidłowe używanie std::cin i std::cout to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.

Nagłówek iostream

Zarówno std::cin, jak i std::cout są obiektami z nagłówka <iostream>. Odwzorowują standardowe strumienie wejścia i wyjścia terminala.

Wyjście za pomocą std::cout

Przesyłaj wartości do std::cout za pomocą <<. Działa to dla każdego typu, dla którego istnieje przeciążenie operator<< — w tym dla wszystkich typów wbudowanych i std::string.

int age = 30;
std::string name = "Ada";
std::cout << "Name: " << name << ", Age: " << age << "\n";

Wejście za pomocą std::cin

Odczytuj wartości za pomocą std::cin >> variable. Białe znaki oddzielają tokeny.

int age;
std::string name;
std::cout << "Enter name and age: ";
std::cin >> name >> age;
std::cout << name << " is " << age << "\n";

Pomijanie białych znaków

Domyślnie operator >> pomija początkowe białe znaki — spacje, tabulatory i znaki nowego wiersza — przed odczytem. Zwykle jest to pożądane, ale należy o tym pamiętać podczas odczytywania pojedynczych znaków.

Wczytywanie całego wiersza

std::cin >> name odczytuje tylko jedno słowo. Aby odczytać wiersz zawierający spacje, użyj std::getline.

std::string line;
std::getline(std::cin, line);
std::cout << "You said: " << line;

Mieszanie >> i getline: częsty błąd

Po wykonaniu std::cin >> n znak nowego wiersza pozostaje w buforze. Następne getline odczyta pusty ciąg znaków. Najpierw usuń pozostały znak nowego wiersza.

int n;
std::cin >> n;
std::cin.ignore();  // consume the leftover newline
std::string line;
std::getline(std::cin, line);

Stan strumienia

Strumienie mają bity stanu: good, eof, fail i bad. Użyj if (std::cin), aby sprawdzić, czy po pobraniu danych strumień nadal może być używany.

Wykrywanie EOF

Koniec pliku sygnalizuje się za pomocą Ctrl+D w systemach Unix lub Ctrl+Z w systemie Windows. Aby przetworzyć całe wejście, wykonuj pętlę, dopóki strumień jest w poprawnym stanie.

int n;
while (std::cin >> n) {
    std::cout << n * 2 << "\n";
}

Szybsze wejście/wyjście w programowaniu konkursowym

Wyłącz synchronizację ze standardowym wejściem/wyjściem C, aby przyspieszyć odczyt w programowaniu konkursowym. Odłącz także cin od cout.

std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);

std::endl a \n — ponownie

std::endl zapisuje znak nowego wiersza i opróżnia bufor. "\n" zapisuje tylko znak nowego wiersza. W pętlach używaj "\n", aby zachować wysoką wydajność.

Ręczne opróżnianie bufora

Jeśli trzeba opróżnić bufor bez dodawania znaku nowego wiersza, użyj std::flush. Jest to przydatne w przypadku wskaźników postępu.

for (int i = 0; i < 100; ++i) {
    std::cout << "\r" << i << "%" << std::flush;
    // ... work ...
}

Szybkie sprawdzenie

Jaka jest różnica między std::endl a "\n" na wyjściu?

Podsumowanie

Używaj std::cout z << do wypisywania danych oraz std::cin z >> do odczytywania tokenów. Do odczytywania całych wierszy używaj std::getline, a po wczytaniu liczby usuwaj pozostałe znaki nowego wiersza za pomocą cin.ignore().

Często zadawane pytania

Czy lekcja „Prawidłowe używanie std::cin i std::cout” jest bezpłatna?

Tak — pełny tekst „Prawidłowe używanie std::cin i std::cout” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Prawidłowe używanie std::cin i std::cout”?

Proszę wykonywać wejście i wyjście strumieniowe za pomocą standardowych strumieni oraz unikać typowych pułapek. Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C++ Academy?

Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Prawidłowe używanie std::cin i std::cout”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?

Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Prawidłowe używanie std::cin i std::cout
  2. Formatowanie wyjścia za pomocą iomanip
  3. Bezpieczne odczytywanie danych za pomocą getline
  4. Praca ze strumieniami std::cerr i std::clog
← Powrót do C++ Academy