gpt4 book ai didi

c++ - 在数组中使用 const char * 读取顺序文件

转载 作者:行者123 更新时间:2023-11-30 00:56:48 25 4
gpt4 key购买 nike

如果这是一个基本问题,我深表歉意,但我无法从其他帖子中弄清楚。我正在尝试读取一堆标记为 "1.jpg" "2.jpg" "3.jpg" 等的图像. 我想使用 for 循环这样做。文件读取器(我在这里使用 SOIL,正如我正在关注的 OpenGL nehe 教程中所推荐的),需要一个 const char* 作为文件名输入。

char numbers[6] = "123456"; 

for (int i=0;i<6;i++)
{
const char* filestring = new char[5];
*filestring = numbers[i] + ".jpg";

texture[i] = SOIL_load_OGL_texture(filestring, ...
... // filestring should be const char* form
}

错误是:

(1) error: initializer-string for array of chars is too long [-fpermissive]

但我不明白 char numbers[6] = "123456" 有什么问题?

error: assignment of read-only location '* filestring'

error: invalid conversion from 'const char*' to 'char' [-fpermissive]

我有点懵。将不胜感激任何建议!

谢谢。

最佳答案

改变这个:

char numbers[6] = "123456";

对此:

const char numbers[] = "123456";

数组的大小由编译器自动确定,因此您无需明确指定。无论如何你都试图将它设置得太小,因为它实际上是 7 个字节宽,因为尾随 null terminator

const 并不是绝对必要的,但如果您将其标记为常量,它会使您的意图更清楚。

此外,这也行不通:

*filestring = numbers[i] + ".jpg";

您不能以这种方式连接 C 字符串。最简单的做法是:

string filestring = string(1, numbers[i]) + ".jpg";

当您需要将它用作 C 字符串时,您可以这样做:

SOIL_load_OGL_texture(filestring.c_str(), ...

关于c++ - 在数组中使用 const char * 读取顺序文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469353/

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