gpt4 book ai didi

c++ - 将 Const Char 附加到 Char* C++

转载 作者:行者123 更新时间:2023-11-28 00:31:31 26 4
gpt4 key购买 nike

我知道这听起来像是一个初学者问题,但我从未在 C++ 中使用过 char*。我总是只使用字符串。但是 Ubuntu 13.10NVidia OpenGL 驱动程序存在错误,因此我必须使用 char*。 Here是错误。

我有一个类在构造函数中采用 const char* folderName,然后创建编译文件夹中的所有 .glsl 文件。我已经尝试过 strcpystrcat,它们看起来都太过分了。

glProgram *p = new glProgram("phong\n");
glProgram :: glProgram(const char* folderName)
{
cout << folderName << endl;
char* name = strdup(folderName);
cout << name << endl;
name = strcat(name,"/vertex.glsl");
cout << name << endl;
}

但输出并不如预期。

phong
phong
/vertex.glsl

如何让输出成为 phong/vertex.glsl

最佳答案

代码无效,因为您覆盖了不属于动态分配数组的内存。您应该自己分配一个足够大的内存区域来包含连接的字符串。

glProgram *p = new glProgram("phong\n");

glProgram :: glProgram(const char *folderName)
{
const char *vertex = "/vertex.glsl";

size_t n = std::strlen( folderName );
if ( n != 0 && folderName[n - 1] == '\n' ) --n;

char *name = new char[n + std::strlen( vertex ) + 1];

std::strncpy( name, folderName, n );
name[n] = '\0';
std::strcat( name, vertex );
}

我也看不出参数包含换行符有任何意义。为什么参数看起来不像 "phong"

关于c++ - 将 Const Char 附加到 Char* C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731932/

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