wchar to char в c ++ - PullRequest
       11

wchar to char в c ++

2 голосов
/ 24 мая 2010

У меня есть консольное приложение Windows CE, точка входа которого выглядит следующим образом

int _tmain(int argc, _TCHAR* argv[])

Я хочу проверить содержимое argv[1] для "-s", преобразовать argv[2] в целое число.У меня возникают проблемы сужения аргументов или доступа к ним для проверки.

Изначально я попытался выполнить следующее с небольшим успехом

if (argv[1] == L"-s")

Я также попытался использовать narrow функцию wostringstream для каждого символа, но это привело к сбою приложения.

* 1015Может ли кто-нибудь пролить свет?Спасибо

Ответы [ 4 ]

7 голосов
/ 24 мая 2010

Должно быть:

if (_tcscmp(argv[1], _T("-s")) == 0)
3 голосов
/ 24 мая 2010
if (argv[1] == L"-s")

Это неверно даже для узких строк, если сравнивать указатели Вам нужно

if(wcscmp(argv[1],L"-s")==0)

или

if(std::wstring(argv[1])==L"-s")
0 голосов
/ 24 мая 2010

Может быть, вам нужно преобразовать запись argv [] в строку, а затем выполнить сравнение. [текст ссылки] [1]

http://www.codeproject.com/Tips/81778/Converting-TCHAR-to-string-while-getting-PC-Name.aspx

[1]:

Приведенная выше ссылка поможет, если вы сможете выполнить преобразование в строку.

0 голосов
/ 24 мая 2010

argv - это массив char*, а не string, поэтому обычное сравнение с == не сработает. Это if-выражение сравнивает два указателя. Можете ли вы построить wstring, а затем сравнить?

if (wstring(argv[1]) == L"-s")
...