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