Wątek przeniesiony 2017-04-26 15:55 z C/C++ przez kq.

Wczytywanie danych aż do napotkania znaku nowej linii

0

Witam.
Mam napisać program, który będzie wczytywał dane aż do napotkania znaku EOF. Ponadto potrzebuję również zrealizować pętlę, która będzie się zatrzymywać po napotkaniu znaku nowej linii (ASCII 10). Problem polega na tym, że to nie użytkownik wprowadza dane a jakby specjalnie przygotowana "strona internetowa" (konkretnie spox.spoj)-spotykam się z tym pierwszy raz dlatego nie wiem trochę jak za to się zabrać... wczytywanie tych danych zrealizowałem za pomocą funkcji "cin"/też nie wiem zbytnio czy jest to poprawne/ jednakże o ile istnieje coś takiego jak cin.eof() o tyle mam problem z tym znakiem nowej linii. Cin nie wczyta mi go nieprawdaż? Zatem jak mógłbym to "naprawić" tak aby pętla się zatrzymała???

Będę wdzięczny za wszystkie sugestie. ;)

5

Szukasz różnic na siłę tam gdzie ich nie ma. Wejście standardowe nie rozróżnia danych wprowadzonych przez "użytkownika" od danych wprowadzonych przez program. Ba, pomijając terminal w trybie tekstowym, np. w linuksie, i tak dane wprowadzane są przez inny program - emulator terminala.

Używaj getline do wczytywania całych linii i cin >> jeśli chcesz wyjmować wyłącznie pojedyncze wartości. Staraj się nie mieszać tych sposobów.

0

Dzięki. :) Czyli coś takiego wczyta mi dane z tej strony poprawnie (dane są w postaci wierszy zakończonych '\n') a odczyta ma się zakończyć po napotkaniu EOF'a... ?

  while(getline(std::cin,cos1)){
  //...
    }
1

Tak jest.

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