#c
Вопрос:
Есть ли какой-либо способ измерить длину каждой переменной, напечатанной с помощью wstringstream
?
Я имею в виду x: 4
, wstring: 11
, hwnd: 10
Для example
:
int main()
{
int x = 1000;
std::wstring A = L"Hello World";
HWND hwnd = L"0x000103FC";
std::wstringstream ss;
ss << L"x: " << x
<< L", wstring: " << A
<< L", hwnd: " << hwnd;
return 0;
}
Я прошу способ, который не включает преобразование всех типов данных в строки и их вычисление .length()
.
Комментарии:
1. Должна быть возможность написать
streambuf
реализацию, которая отбрасывает все выходные данные и подсчитывает только количество отправленных в нее символов. Насколько мне известно, в стандартной библиотеке такого нет; если вам это нужно, вам придется создать свою собственную.2. Если вы вызываете
ss.tellp()
до и после вывода каждой переменной, разница должна указывать вам, сколько символов было создано при форматировании этой переменной. Пример здесь демонстрирует это.3. Эта
HWND
строка почти наверняка делает не то, что вы думаете. Вы берете массив постоянных символов, который случайно напоминает шестнадцатеричное число, а затем берете ссылку на этот массив.hwnd
представляет собой указатель на массив символов, переосмысленный как дескриптор окна.