Подтвердить что ты не робот

Размер строки

Есть ли какой-либо прямой способ рассчитать размер внутренней строки в stringstream?

Здесь str() возвращает копию, а затем получает размер строки.

std::stringstream oss("String");
oss.str().size();
4b9b3361

Ответ 1

std::stringstream oss("String");
oss.seekp(0, ios::end);
stringstream::pos_type offset = oss.tellp();

Это для указателя записи, но результат будет одинаковым для указателя чтения на Visual С++ v10.

Ответ 2

Конечно, есть:

std::stringstream oss("Foo");
oss.seekg(0, ios::end);
int size = oss.tellg();

Теперь размер будет содержать размер (в байтах) строки.

EDIT:

Это также хорошая идея поставить после вышеприведенного фрагмента, поскольку он возвращает внутренний указатель в начало строки.

oss.seekg(0, ios::beg);