【发布时间】:2021-12-07 22:49:12
【问题描述】:
我有一些需要 char*** 作为输入参数的 api 函数。 所以,char*** 是 char* 数组的数组。
如何正确设置此字符***?
vector<string> theAttributeValues;
...
char*** listOfListOfValues;
char** listOfValues;
char* stringValue;
for (int i=0; i<theAttributeValues.size(); i++)
{
stringValue = theAttributeValues[i].c_str();
listOfValues = (const char**)stringValue;
listOfListOfValues = new const char**(listOfValues);
}
以及如何读取这个 char*** 的任何 char* ?
for (int i=0; i<listOfListOfValues.size(); i++)
{
char* strValue = listOfListOfValues[i][0];
cout<<to_string(i)<<" value:"<<strValue<<endl;
}
【问题讨论】:
-
char ***看起来像一个二维字符串数组,但vector<string>是一维的。 -
@HolyBlackCat 是的,函数 writen 来设置字符串列表,但在我的情况下它只设置一个字符串,所以 2D 总是等于 1。在第二个代码示例中,我只读 [0 ] 元素。
-
好的,下一个问题:接收数组的函数是否也取大小?
-
@HolyBlackCat 是的,函数还获取 ListOfListOfValues 的大小并以自己的方式使用它。这些功能没有问题。问题是设置这个 char*** 来传入这个函数。 char*** 必须是这样的: ListOfListOfValues[0][0] ListOfListOfValues[1][0] ListOfListOfValues[2][0] etc...第二维只能是[0],没关系。
-
您是否真的定义了名称混乱的
sizeOf函数,或者您是否拼写错误并误用了sizeof?