Stringove možemo čitati sa standardnog ulaza kao i sve druge podatke pomoću operatora >>
. Pri tome treba
znati da se kao delimiter između različitih stringova koriste bjeline (koje pored bjelina
uključuju tabulatore i znak za prijelaz u novi red). Dakle, pri upisu bit će preskočene
prethodne bjeline i čitanje će biti zaustavljeno nailaskom na prvu bjelinu. To
ilustrira sljedeći primjer:
#include <iostream>
#include <string>
int main()
{
std::string word;
while(std::cin >> word)
std::cout << word<< std::endl;
return 0;
}
Ukoliko želimo pročitati čitavu liniju sa svim eventualnim bjelinama trebamo koristiti
globalnu funkciju getline
istream& std::getline ( istream& is, string& str );
koja je deklarirana u zaglavlju <string>.
Ona čita do znaka za prijelaz u novi red, koji pročita i odbaci. Vraća ulazni tok
koji se može testirati kao u sljedećem primjeru u kojem učitavom ulaz liniju po liniju sve
do kraja ulaznog toka.
#include <iostream>
#include <string>
int main()
{
std::string line;
while(std::getline(std::cin, line))
std::cout << line << std::endl;
return 0;
}
Da li je učitavanje uspjelo saznajemo testiranjem ulaznog toka.
Napomena. std::getline()
pročita znak za prijelaz u novi red ali ga ne dodaje u
string.
Napomena. Ulazni tokovi imaju metodu članicu getline()
istog imena i
iste funkcionalnosti, ali ona radi
sa C-stringovima (nizovima znakova završenim nul znakom).
Fukcija getline()
ima i treći parametar koji ima predodređenu vrijednost.
Taj parametar je separator i ako se ne zada ima vrijednost prijelaza u novi red (\n).
istream& std::getline ( istream& is, string& str, char separator );
Zadavanjem bjeline kao separatora moguće je ulazni tekst čitati riječ po riječ.