[英]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.