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