gpt4 book ai didi

c++ - 初始化一个 const char* 数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:06 25 4
gpt4 key购买 nike

我在 C++17 项目中工作,但必须使用 C-legacy-library。为此,我必须以 C 风格创建一个 const char* 数组,但我正在努力进行初始化。特别是,

#include <iostream>

int main(int argc, char* argv[])
{
const int bound = 3;

const char* inames[bound]{ "" };
for(unsigned int i = 0; i < bound; i++) {
const char *number = std::to_string(i).c_str();
inames[i] = number;
}

for(unsigned int i = 0; i < bound; i++) {
std::cout << "inames["
<< std::to_string(i)
<< "] = "
<< inames[i]
<< std::endl;
}

return 0;
}

返回

inames[0] = 2
inames[1] = 2
inames[2] = 2

作为输出,我不明白。我希望输出是

inames[0] = 0
inames[1] = 1
inames[2] = 2

谁能帮我指出我的错误?

最佳答案

您的代码有未定义的行为

std::to_string(i).c_str()

您正在创建一个临时 std::string 实例,然后获取其内部 const char* 指针。在该行的末尾,临时实例已死,因此指针现在悬空。

关于c++ - 初始化一个 const char* 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52314992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com