Как проверить, имеет ли строка определенный символ Юникода? - PullRequest
0 голосов
/ 05 июня 2010

Предположим, у вас есть исполняемый файл командной строки, который получает аргументы.Этот executalbe готов к работе с широкими символами, и вы хотите проверить, начинается ли один из этих аргументов со случая HYPHEN, в котором можно указать:

command -o foo

как вы можете проверить его внутри своего кодаесли вы не знаете, что хозяин использовал кодировку?Не должно ли быть возможно, чтобы данная консоль производила такое же представление HYPHEN другим символом в лесу широких символов?(в таком случае это будет дикий символ: 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"));
   }
}

1 Ответ

2 голосов
/ 05 июня 2010

В вашем случае Windows доставит командную строку в виде строки UTF-16, поэтому вам не нужно беспокоиться о наборах символов. Просто отметьте (inputFile->c_str()[0] == L'-') и вам будет хорошо идти. Конечно, UTF-16 - это кодирование переменной длины, но символ дефиса представлен одним значением широкого символа.

...