TLDR;
如何有條件地初始化 a const char* []
?
const char* arr[] = (some_condition ? {"ta", "ta"} : {"wo", "lo", "lu"});
錯誤:“{”標記(...)之前的預期主運算式錯誤:“{”標記(...)
之前的預期“:”錯誤:“{”標記(...)
之前的預期主運算式
錯誤:從“char**”到“const char**”的無效轉換[-fpermissive]
細節
我正在使用一個將 aconst char* argv[]
作為輸入的外部 api 。基于存盤在更合理的資料結構中的變數,比如std::string
,我構造了這個輸入變數,但我顯然無法正確地這樣做。
老實說,問題的根源歸結為一個可選的麻煩引數。以下作品(有點)..
bool use_optional = false;
std::string optional = "blah";
const char* arr[] = {
"arg1",
(use_optional ? optional.c_str() : ""),
"arg3"
};
這個解決方案的問題是我在arr
, ie 中得到了一個空條目{"arg1", "", "arg3"}
,我非常想避免這種情況。
uj5u.com熱心網友回復:
作為解決方法,您可以創建 2 個不同的陣列,并在它們之間切換:
const char* arr1[] = {"ta", "ta"};
const char* arr2[] = {"wo", "lo", "lu"};
auto arr = some_condition ? arr1 : arr2;
另一種可能性是使用向量:
std::vector<const char*> varr;
varr.push_back("arg1");
if (use_optional) varr.push_back(optional.c_str()),
varr.push_back("arg3");
auto arr = &varr[0];
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378897.html
下一篇:如何計算每個字串的平均值