Czy istnieje bezpośredni sposób obliczania wielkości ciągu wewnętrznego w strumieniu łańcuchowym?Wielkość strumienia stringów
Tutaj, str()
zwraca kopię, a następnie pobiera rozmiar ciągu znaków.
std::stringstream oss("String");
oss.str().size();
Czy istnieje bezpośredni sposób obliczania wielkości ciągu wewnętrznego w strumieniu łańcuchowym?Wielkość strumienia stringów
Tutaj, str()
zwraca kopię, a następnie pobiera rozmiar ciągu znaków.
std::stringstream oss("String");
oss.str().size();
std::stringstream oss("String");
oss.seekp(0, ios::end);
stringstream::pos_type offset = oss.tellp();
To dla wskaźnika zapisu, ale wynik jest taki sam dla wskaźnika przeczytać na Visual C++ v10.
oczywiście jest:
std::stringstream oss("Foo");
oss.seekg(0, ios::end);
int size = oss.tellg();
Teraz rozmiar będzie zawierać rozmiar (w bajtach) łańcucha.
EDIT:
Jest to również dobry pomysł, aby umieścić po powyższym fragmencie, gdyż stawia wewnętrzny wskaźnik do początku łańcucha.
oss.seekg(0, ios::beg);
Interesujące. Zastanawiam się, czy to zawsze będzie pokazywać ten sam wynik, co ekwiwalenty wskaźnika zapisu. –
Jeśli używasz wskaźnika zapisu, czy nadal musisz szukać do końca? Czy nie zawsze będzie na końcu? – Ferruccio
Wygląda na to, że Gcc 4.4 nie podoba się, ustawia awarię strumienia. –