2010-05-24 6 views
2

J'ai une application console Windows CE qui est le point d'entrée ressemble à ceciwchar à carboniser en C++

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

Je veux vérifier le contenu de argv[1] pour convertir "-s"argv[2] en un entier. J'ai de la difficulté à restreindre les arguments ou à y accéder pour les tester.

J'ai essayé d'abord ce qui suit avec peu de succès

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

J'ai aussi essayé d'utiliser la fonction narrow de wostringstream sur chaque personnage mais écrasé l'application.

Quelqu'un peut-il apporter de la lumière? Merci

Répondre

7

Il devrait être:

if (_tcscmp(argv[1], _T("-s")) == 0) 
+0

Je pense que 'wcscmp' est préferé – Andrey

+1

Je l'ai changé en' _tcscmp', qui est le plus flexible. –

0

argv est un tableau de char*, non string, de sorte que la comparaison habituelle avec == ne fonctionnera pas. Cette if-statement compare deux pointeurs. Pouvez-vous construire un wstring et ensuite comparer?

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

Ceci est correct même pas pour les chaînes étroites que vous comparez des pointeurs. Vous avez besoin

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

ou

if(std::wstring(argv[1])==L"-s") 
Questions connexes