簡體   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