Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法从字符***转换为字符*****_C++_Arrays_Char - Fatal编程技术网

C++ 无法从字符***转换为字符*****

C++ 无法从字符***转换为字符*****,c++,arrays,char,C++,Arrays,Char,我正在尝试创建一个包含从文件中读取的字符串的字符**,但当我尝试创建它时,会出现一个错误,提示: error C2440: 'initializing' : cannot convert from 'char ***' to 'char **' ` 出现错误的代码部分: //在此基础上定义的限制 字符**re=新(字符**)[限制] 您正在尝试创建一个字符指针数组,这意味着您应该使用: char** re = new (char*)[limit]; 但是,你可能想考虑C++中的一些非C方面,

我正在尝试创建一个包含从文件中读取的字符串的字符**,但当我尝试创建它时,会出现一个错误,提示:

error C2440: 'initializing' : cannot convert from 'char ***' to 'char **'
`

出现错误的代码部分:
//在此基础上定义的限制

字符**re=新(字符**)[限制] 您正在尝试创建一个字符指针数组,这意味着您应该使用:

char** re = new (char*)[limit];

但是,你可能想考虑C++中的一些非C方面,比如向量——你会发现你的生产率大大提高。

< p>你试图创建一个字符指针数组,这意味着你应该使用:

char** re = new (char*)[limit];

然而,你可能会考虑拥抱C++的一些非C方面,比如向量——你会发现你的生产力大大提高。

< P>左手操作和右手操作之间存在着不匹配。
  • 左手:字符双指针
    右侧:字符的双指针 数组(产生第三个指针)
因此,如果您想使用数组,可以使用下面给出的示例:

char **re = (char *[]){ "New Game", "Continue Game", "Exit" };
但是,选择只能用于线性寻址。例如:

printf ("%s", &(*re)[0]); outputs: New Game
printf ("%s", &(*re)[1]); outputs: ew Game
printf ("%s", &(*re)[9]); outputs: Continue Game

左手操作与右手操作不匹配

  • 左手:字符双指针
    右侧:字符的双指针 数组(产生第三个指针)
因此,如果您想使用数组,可以使用下面给出的示例:

char **re = (char *[]){ "New Game", "Continue Game", "Exit" };
但是,选择只能用于线性寻址。例如:

printf ("%s", &(*re)[0]); outputs: New Game
printf ("%s", &(*re)[1]); outputs: ew Game
printf ("%s", &(*re)[9]); outputs: Continue Game

您可能应该使用
std::string
而不是
char
new(char**)[limit]
正在创建指向数组指针的新
char
指针。这是三个层次的指针,而不是像
char**
中的两个。Duplicate@Bmize729,我能看到的与另一个问题的唯一相似之处是单词
cannot
,“
concert
from
to
:-)这是一个完全不同的问题,使用
而不是
复制字符时。@Anycorn我稍后会将其转换为字符串,但由于某种原因,如果我尝试返回字符串*,visual studio会给我一个错误(搜索错误,显然DLL无法导出返回字符串*的函数。不知道为什么)无论如何,谢谢。您可能应该使用
std::string
而不是
char
new(char**)[limit]
正在创建指向数组指针的新
char
指针。这是三个层次的指针,而不是像
char**
中的两个。Duplicate@Bmize729,我能看到的与另一个问题的唯一相似之处是单词
cannot
,“
concert
from
to
:-)这是一个完全不同的问题,使用
而不是
复制字符时。@Anycorn我稍后会将其转换为字符串,但由于某种原因,如果我尝试返回字符串*,visual studio会给我一个错误(搜索到的错误,显然DLL无法导出返回字符串*的函数。不知道为什么)。无论如何,谢谢。只要尝试一下,它就成功了。我确实考虑过使用向量,但我仍在试图找出如何使用Itter来完成它们。谢谢@LucasS,你不必使用迭代器(尽管它们很方便)。使用
vec[idx]
,您可以像数组一样对向量进行索引,因为它内置了
操作符[]
。只要尝试一下,就可以了。我确实考虑过使用向量,但我仍在试图找出如何使用Itter来完成它们。谢谢@LucasS,你不必使用迭代器(尽管它们很方便)。使用
vec[idx]
可以像数组一样对向量进行索引,因为它内置了
操作符[]