Преобразование CString
к int
в режиме ASCII так просто, какпреобразовать CString МФЦ в целое как для ASCII и UNICODE
CString s("123");
int n = atoi(s);
Однако это не работает для проектов в режиме UNICODE, как CString
становится широко голец строка.
Как написать свой код для покрытия как режимов ASCII, так и UNICODE без дополнительных сообщений if
?
Я специально хотел избежать любого вида двойного кодирования. Поэтому нет 'CStringA' и' CStringW', no-no-no. В дополнение к этому не все строки с широким символом конвертируются в ASCII без правильной «локали», и хотя мой короткий пример показал упрощенный текст, строки часто исходят из токенизации широкого диапазона входных данных, и я не хочу отлаживать UNICODE вопросы, TBH. – YePhIcK
@YePhIcK ** 1. ** Если у вас есть дополнительные ограничения, они должны были быть частью вопроса изначально. ** 2. ** Поскольку 'atoi' не может обрабатывать символы, кроме цифр, не имеет значения, какие символы Unicode существуют в исходной строке. –
Я согласен с обоими твоими очками. Однако моя точка w.r.t. # 2 было то, что вы не можете просто предположить, что 'CStringA' будет конвертировать из UNICODE без проблем – YePhIcK