Как получить длину переменных в wstringstream

#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 представляет собой указатель на массив символов, переосмысленный как дескриптор окна.