Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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
将char指针数组的值复制到char数组 这是一个简单的游戏,我正在努力学习如何在一个现有的项目中应用C++,这是我学习的最好方法,我有C语言和其他高级语言的编程经验,所以对我来说还是很新的。所以我有一个种族列表: const char* Races[] = { "Demon", "Human", "Elf", "Orc", "Aliens" };_C++_Arrays_Struct - Fatal编程技术网

将char指针数组的值复制到char数组 这是一个简单的游戏,我正在努力学习如何在一个现有的项目中应用C++,这是我学习的最好方法,我有C语言和其他高级语言的编程经验,所以对我来说还是很新的。所以我有一个种族列表: const char* Races[] = { "Demon", "Human", "Elf", "Orc", "Aliens" };

将char指针数组的值复制到char数组 这是一个简单的游戏,我正在努力学习如何在一个现有的项目中应用C++,这是我学习的最好方法,我有C语言和其他高级语言的编程经验,所以对我来说还是很新的。所以我有一个种族列表: const char* Races[] = { "Demon", "Human", "Elf", "Orc", "Aliens" };,c++,arrays,struct,C++,Arrays,Struct,在某一点上,我收到了一个用户的注册,并选择了一个比赛。我将用户的所有信息保存到一个结构中,我还想将比赛的全名保存到这个结构中 struct User_t { unsigned int RaceID; char Race[16]; }; 以下代码是我将值放入结构中的代码: User_t User; User.RaceID = 3; strcpy(User.Race, Races[User.RaceID]); 然而,这是行不通的。这是游戏的一部分,异常处理非常可怕,它基本上会使游戏

在某一点上,我收到了一个用户的注册,并选择了一个比赛。我将用户的所有信息保存到一个结构中,我还想将比赛的全名保存到这个结构中

struct User_t {
   unsigned int RaceID;
   char Race[16];
};
以下代码是我将值放入结构中的代码:

User_t User;

User.RaceID = 3;
strcpy(User.Race, Races[User.RaceID]);
然而,这是行不通的。这是游戏的一部分,异常处理非常可怕,它基本上会使游戏崩溃,并且没有任何可见的错误。我正在努力找出我做错了什么。任何建议,可能还有其他方面的建议?

假设Races数组的作用域是全局的,您可以简单地避免复制它,只需执行以下操作:

struct User_t {
   unsigned int RaceID;
   const char* Race;
};

User_t User;

User.RaceID = 3;
User.Race = Races[User.RaceID];
enum class eRaces
{
    eDemon,
    eHuman,
    eElf,
    eOrc,
    eAlien,
};

struct User
{
    eRaces myRace;
};

User User;

User.myRace = eRaces::eElf;
您也可以使用注释中提到的std::string,但您不会避免复制它。既然你开发了游戏,我认为性能比C++语言的客观性高。

< P>假设RealStAR的范围是全局的,你可以简单地避免复制它,只做类似的事情:

struct User_t {
   unsigned int RaceID;
   const char* Race;
};

User_t User;

User.RaceID = 3;
User.Race = Races[User.RaceID];
enum class eRaces
{
    eDemon,
    eHuman,
    eElf,
    eOrc,
    eAlien,
};

struct User
{
    eRaces myRace;
};

User User;

User.myRace = eRaces::eElf;
您也可以使用注释中提到的std::string,但您不会避免复制它。自从你开发游戏以来,我认为性能比C++语言的客观性更高。 我正在努力找出我做错了什么。有什么建议吗,也许还有其他方面的建议

<>你试图用C++来做,好像C是语法上可能的,你不知道C和C++都做得不够。p> 帮你自己一个忙,用真正的C++:

我正在努力找出我做错了什么。有什么建议吗,也许还有其他方面的建议

<>你试图用C++来做,好像C是语法上可能的,你不知道C和C++都做得不够。p> 帮你自己一个忙,用真正的C++:


我建议您查看枚举类{}。使代码不易出错更容易

您可以这样编写代码:

struct User_t {
   unsigned int RaceID;
   const char* Race;
};

User_t User;

User.RaceID = 3;
User.Race = Races[User.RaceID];
enum class eRaces
{
    eDemon,
    eHuman,
    eElf,
    eOrc,
    eAlien,
};

struct User
{
    eRaces myRace;
};

User User;

User.myRace = eRaces::eElf;

我建议您查看枚举类{}。使代码不易出错更容易

您可以这样编写代码:

struct User_t {
   unsigned int RaceID;
   const char* Race;
};

User_t User;

User.RaceID = 3;
User.Race = Races[User.RaceID];
enum class eRaces
{
    eDemon,
    eHuman,
    eElf,
    eOrc,
    eAlien,
};

struct User
{
    eRaces myRace;
};

User User;

User.myRace = eRaces::eElf;

如果你使用C++,为什么不使用STD::String?你会发现使用STD::string和其他类而不是C字符串和结构更容易。@ Roel:你说的不工作是什么意思?问题肯定在别处。至于你的共享代码,它很好,我想问题在别的地方。如果你使用C++,为什么不直接使用std::string?你会发现使用std::string和其他类比使用c-strings和structs容易得多。@Roel你说它不起作用是什么意思?问题肯定出在其他地方。就你的共享代码而言,这很好,我想问题出在别的地方了。关于在玩家的生命周期中复制一个10个字符字符串的性能问题?我实际上决定不复制与性能相关的名称,而是在每次需要时从char*数组中选择值。谢谢大家!@Quentin如果对象用户被复制到某个地方,它在玩家的生命周期中不会出现一次。开销可能很小,但在我看来,考虑性能总是更好的。评测并不是我真正的领域,但这一思路充满了过早优化的味道。玩家一生中只复制一次10个字符的字符串会带来性能问题吗?实际上,我决定不复制与性能相关的名称,而是在每次需要时从char*数组中选择值。谢谢大家!@Quentin如果对象用户被复制到某个地方,它在玩家的生命周期中不会出现一次。开销可能很小,但在我看来,考虑性能总是更好的。评测并不是我真正的领域,但这种思路带有过早优化的味道。