2012-12-12 8 views
8

Mam problem. Załaduję cały plik, a następnie przechodzę przez niego, aby uzyskać trochę informacji. Jednak w formacie mapy może być 0 lub 20 "linii" z informacją. Muszę wiedzieć, jak uzyskać ciąg std :: string. Istnieje funkcja (strumień źródłowy, docelowy, dziesiętny), ale potrzebuję (ciąg źródłowy, docelowy, dziesiętny). Wyszukiwanie w strumieniach nie jest możliwe w C++ (używa tylko wielu tymczasowych ciągów znaków, a wyodrębnianie i wstawianie wiele razy, to jest niejasne i nie chcę tego robić tak niechlujnie). Więc chcę wiedzieć, jak uzyskać od std :: string.Jak zrobić "getline" ze std :: string?

Thans

Odpowiedz

17

Wydaje się chcieć std::istringstream, który znajduje się w nagłówku <sstream>:

std::string some_string = "..."; 

std::istringstream iss(some_string); 

std::string line; 
while (std::getline(iss, line)) 
{ 
    // Do something with `line` 
} 
+0

Dzięki. Proste pytanie z tym związane. Jak sprawić, by getline NIE otrzymywał linii, gdy w strumieniu nie ma liczby dziesiętnej? – user1873947

+0

Ponieważ to nadal jest problem, ponieważ nie mogę przeszukiwać strumienia (dlatego chciałem uzyskać getline, który nie istnieje). – user1873947

+0

@ user1873947 Najprostszym jest prawdopodobnie sprawdzenie, czy używany łańcuch zawiera cyfrę, a następnie pominięcie całego 'std :: istringstream' /' std :: getline' bit. –

Powiązane problemy