gpt4 book ai didi

c++ - 新手 C++;添加 char* 数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:07 33 4
gpt4 key购买 nike

目前正在学习 C++,也许是因为我现在真的很沮丧,但我似乎真的无法解决这个问题:

有一个类构造器:

Class (const char* file); 

我在我的主类中这样使用它:

char* chararr = new char[2048]; 
//stuff with charrarr
// std::cout << chararr would be: "C:\stuff\paths\etc\"
Class c( strcat(chararr , "filename.file"));
//I want it to be: "C:\stuff\paths\etc\filename.file
Class c2( strcat(chararr , "filename2.file2"));
////I want this to be: "C:\stuff\paths\etc\filename2.file2" but it is instead
// "C:\stuff\paths\etc\filename.filefilename2.file"

问题是 strcat 修改了 chararr 所以我第二次这样做时,对于 c2 类,它变得一团糟......我猜这是一件非常非常基本的事情,它让我更加沮丧知道我错过了一些非常明显的东西......

最佳答案

第一次调用 strcpy() 时您的代码出错,而您正在与垃圾连接。

Class c( strcpy(chararr , "filename.file"));

否则它会与垃圾、未定义的行为连接。

编辑:

// std::cout << chararr would be: "C:\stuff\paths\etc\"
size_t len = strlen(chararr); // <--- notice
Class c( strcat(chararr , "filename.file"));
// path\path2\filename.file
// ^ replace `f` with '\0'
chararr[len] = '\0'; // <--- notice
Class c2( strcat(chararr , "filename2.file2"));

关于c++ - 新手 C++;添加 char* 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792599/

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