繁体   English   中英

如何从win32应用程序中的命令行参数获取std :: string?

[英]How to get std::string from command line arguments in win32 application?

所以现在我有一个

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

如何使它基于字符串? int main (int argc, std::string *argv[])足够吗?

你不能改变主要的签名,所以这是你最好的选择:

#include <string>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<std::string> params(argv, argv+argc);
    // ...
    return 0;
}

如果要从传递的输入参数中创建字符串,还可以添加字符指针以自行创建字符串

#include <iostream>
#include <string>
using namespace std;

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

string passedValue;
for(int i = 1; i < argc; i++)
 passedValue += argv[i];
    // ...
    return 0;
}

你不能那样做,因为main函数是明确声明的,因为它是一个入口点。 请注意,CRT对STL一无所知,所以无论如何都要barf。 尝试:

#include <string>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<std::string> args;
    for(int i(0); i < argc; ++i)
        args.push_back(argv[i]);

    // ...

    return(0);
}; // eo main

这将是非标准的,因为3.6.1的标准说

实现不应预定义主函数。 此功能不应过载。 它应该具有int类型的返回类型 ,否则其类型是实现定义的。 所有实现都应允许以下两个主要定义:

int main() { /* ... */ }

int main(int argc, char* argv[]) { /* ... */ }

不,那是不允许的。 如果存在,则强制要求为char * argv []。

顺便说一下,在C ++ main中应该总是声明为返回'int'

main接收char *。 你必须自己把argv数组放到std :: strings中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM