2010-06-05 3 views
0

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

командования -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")); 
    } 
} 

ответ

2

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

Смежные вопросы