How can I parse integers passed to an application as command line arguments if the app is unicode?
Unicode apps have a main like this:
int _tmain(int argc, _TCHAR* argv[])
argv[?] is a wchar_t*. That means i can't use atoi. How can I convert it to an integer? Is stringstream the best option?
if you have a TCHAR array or a pointer to the begin of it, you can use
std::basic_istringstream
to work with it:Now,
number
is the converted number. This will work in ANSI mode (_TCHAR is typedef'ed tochar
) and in Unicode (_TCHAR is typedef`ed to wchar_t as you say) mode.I personally would use
stringstreams
, here's some code to get you started:A TCHAR is a character type which works for both ANSI and Unicode. Look in the MSDN documentation (I'm assuming you are on Windows), there are TCHAR equivalents for atoi and all the basic string functions (strcpy, strcmp etc.)
The TCHAR equivalient for atoi() is _ttoi(). So you could write this:
Dry coded and I don't develop on Windows, but using
TCLAP
, this should get you running with wide characterargv
values: