【发布时间】:2013-02-24 21:33:57
【问题描述】:
我正在处理一个最初用 C 进行采样但想用 C++ 进行的项目。
有一个部分使用了 strcat(),我被告知要使用替代方法。我找到了一个here,但是当我尝试这些时,编译器给了我以下错误:
错误:
char*' andchar*' 到二进制 `operator+' 类型的无效操作数
是不是我做错了什么?
编辑:
这是代码中不起作用的部分
FILE *FileOpen(string *fname, string* mode){
FILE *fp;
string *str = "";
str += "tmp/"; //all files to be created in temporary sub directory
str += fname;
if((fp=fopen(str,mode))==NULL){
fprintf(stderr,"Cannot open file: %s\n", &fname);
exit(1);
}
FileReader(fname);
return(fp);
}
编辑 2: 对于那些想知道为什么我有 FileReader 的人:这是项目的第 2 部分。反汇编代码。
【问题讨论】:
-
是的,因为
char*与std::string不同。 -
请贴出错误代码
-
“我做错了什么吗?”显然是的。如果你不这样做,你就不会出错。现在,如果你想问什么你做错了什么......以善良的名义,我们应该如何在没有看到你的代码的情况下知道?
-
请把那个引用扔到很远的地方。我发现了这个小宝石:
strcpy(str, strcat(str1, str2));,并声称它与str = str1+str2;相同。 (不是,因为它会更改str1并且如果str1是常量/字符串文字或没有为连接分配足够的存储空间,则会导致未定义的行为)