[C++] 解析unicode C ++应用程序中的命令行参数


Answers

TCHAR是一种适用于ANSI和Unicode的字符类型。 看MSDN文档(我假设你在Windows上),有atocha和所有基本字符串函数(strcpy,strcmp等)的TCHAR等价物。

对于atoi(),TCHAR等价于_ttoi()。 所以你可以写这个:

int value = _ttoi(argv[1]);
Question

如果应用程序是unicode,我如何解析传递给应用程序的整数作为命令行参数?

Unicode应用程序有一个这样的主要:

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

argv [?]是一个wchar_t *。 这意味着我可以使用atoi。 我怎样才能将其转换为整数? 是串流最好的选择?




干编码,我不开发在Windows上,但使用TCLAP ,这应该让你运行宽字符argv值:

#include <iostream>

#ifdef WINDOWS
# define TCLAP_NAMESTARTSTRING "~~"
# define TCLAP_FLAGSTARTSTRING "/"
#endif
#include "tclap/CmdLine.h"

int main(int argc, _TCHAR *argv[]) {
  int myInt = -1;
  try {
    TCLAP::ValueArg<int> intArg;
    TCLAP::CmdLine cmd("this is a message", ' ', "0.99" );
    cmd.add(intArg);
    cmd.parse(argc, argv);
    if (intArg.isSet())
      myInt = intArg.getValue();
  } catch (TCLAP::ArgException& e) {
    std::cout << "ERROR: " << e.error() << " " << e.argId() << endl;
  }
  std::cout << "My Int: " << myInt << std::endl;
  return 0;
}



Links