Как проверить, имеет ли в строке определенный unicode char?
Вопрос
Покупайте, у вас есть исполняемый файл командной строки, который получает аргументы. Этот ExecutaLBE готов к WideChar, и вы хотите проверить, начинается ли один из этих аргументов с дефиса, в котором он вариант:
Команда -o foo
Как вы могли бы проверить его в своем коде, если не знаете, что Charset был использован хостом? Нельзя ли невозможно получить заданную консоль для создания того же дефис -представления другим символом в лесу Видехара? (В таком случае это был бы дикий характер: p)
int _tmain(int argc, _TCHAR* argv[])
{
std::wstring inputFile(argv[1]);
if(inputFile->c_str() <is an HYPHEN>)
{
_tprintf(_T("First argument cannot be an option"));
}
}
Решение
В вашем случае Windows предоставит командную строку в качестве строки UTF-16, поэтому вам не нужно беспокоиться о наборах символов. Просто проверьте (inputFile->c_str()[0] == L'-')
И тебе будет хорошо. Конечно, UTF-16 является кодированием переменной длины, но символ дефиса представлен одним значением широкого обсадки.