我是從像這樣在命令行上運行的C++ 11方案,列表初始化向量<string>用2炭[]指針
馬科@主機$ ./program.out一個BB CCC
用於製作可執行的.cpp文件看起來是這樣的:
#include<iostream>
#include<vector>
#include<string>
int main(int argc, char* argv[]){
std::vector<std::string> strs = {argv + 1, argv + argc};
std::cout << strs[2] << endl;
return 0;
}
當我運行它,它輸出CCC。我沒有想到,因爲列表初始值設定項只包含char *類型的兩個元素。我見過像這樣的列表inits:
vector<string> strs = {"str1", "str2", ..., "strN"};
但指針init對我來說是全新的。看起來這些指針正被視爲開始和結束迭代器。 我的問題是,編譯器知道如何從argv + 1迭代到argv + argc來初始化strs中的單個字符串?只是爲了把事情放在上下文中,是否有一種方法可以在C中以類似的方式使用列表初始化來初始化一個char *數組?
「有沒有一種方法可以在C中以類似的方式使用列表初始化來初始化char *數組?」會很好,不是嗎?但是,它正在執行一個構造函數,它後面有很多C++ voodoo,它們不存在於C上。 – user4581301