C++ _TCHAR* 到 std::string

标签 c++ string visual-studio-2010 tchar

我用C++创建了一个项目,VS2010创建了

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

string sInput;
string sOutput;
int iMode=0;

if (argc==3)
{
    if (strcmp(argv[0], "-e")==0)
    {
        iMode = 1;
    } 
    else if (strcmp(argv[0], "-d")==0)
    {
        iMode =2;
    }
    sInput=argv[1];
    sOutput=argv[2];
}
}

如您所见,我想将 args 视为字符串,但我不确定如何从 _TCHAR* 到 std::string。

有人可以帮忙吗? 非常感谢!

最佳答案

命令行参数最简单的方法是选择您是否希望它们支持宽字符串。如果没有,那很简单:

int main(int argc, char *argv[])

但是,如果您需要它们,事情会变得有点复杂,但不会那么复杂。 MSVC 有一些 _wmain 或任何变体,但它不是标准的。我更喜欢标准的主要签名。你可以这样做:

int main() {
    PWSTR cmdLine = GetCommandLineW();

    int argc;
    PWSTR *argv = CommandLineToArgvW(cmdLine, &argc);
}

整个 TCHAR 困惑处理起来非常烦人。如果您需要宽字符串支持,最好只使用宽字符串;如果不需要,最好使用窄字符串。在处理其他 Windows API 函数时,我强烈建议进出它们的所有内容都是宽字符串。

关于C++ _TCHAR* 到 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16706632/

相关文章:

c++ - 内联使用静态数据初始值设定项

c++ - 错误 : no match for ‘operator+’ in ‘boost::filesystem::path::filename() const() + "/"’

c - 如何更改VS的编译器?

c# - 从 Windows Phone 7 访问 WiFi 信息

visual-studio-2010 - Windows的等效于gettimeday()

c++ - C++中所有非成员函数指针的大小是否相同

c++ - C++ 中 std::priority_queue 的比较器部分是什么意思?

java - 来自字符串 "1/12/2014"的 GregorianCalendar

c - 由于字符串复制导致段错误

Python 字符串 : obtaining what's left after python string slice