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

标签 c++ pointers char strcat

目前正在学习 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/

相关文章:

c++ 指向引用的指针

c - 使用指针作为函数参数读取并显示姓名和年龄

c++ - 函数结束后指针会死亡吗?

无法更改 char * c 指向的地址

java - 如何将文本文件读入二维字符数组?

c++ - 传递派生类指针 C++ 时的运行时错误

c++ - 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 使文本不稳定

c++ - 为什么数组的 x 和 &x 相同

c++ - C++中 '~'有什么用?

c - 如何将 fgets 字符串结果存储到 char 数组中?