Как проверить, имеет ли в строке определенный unicode char?

StackOverflow https://stackoverflow.com/questions/2979523

  •  24-10-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top