Определение длины L-строки

Получить длину L-строки можно с помощью функции wcslen(). Прототип функции:

#include <cwchar> /* или #include <cstring> */
size_t wcslen(const wchar_t *str);

Функция wcslen() возвращает количество символов без учета нулевого символа. Тип size_t объявлен как беззнаковое целое:

typedef unsigned __int64 size_t;
#define __int64 long long

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка";
size_t len = std::wcslen(str);
std::wcout << len << std::endl;                           // 6
std::wcout << sizeof(str) << std::endl;                   // 14
std::wcout << sizeof(str) / sizeof(wchar_t) << std::endl; // 7
wchar_t *p = str;
std::wcout << sizeof(p) << std::endl;
// Значение в проекте Test64: 8
std::wcout << str << std::endl;  // строка

Обратите внимание: длина L-строки и длина символьного массива — это разные вещи. Длина L-строки — это количество символов с начала массива до первого нулевого символа. Длина символьного массива — это общее количество символов, доступное под строку. Кроме того, следует учитывать, что один символ в L-строках занимает два байта, поэтому чтобы получить количество символов в символьном массиве нужно разделить размер массива на размер типа wchar_t. Не нужно свято верить, что размер типа wchar_t всегда равен двум байтам. Для определения размера обязательно используйте оператор sizeof.

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов