我写了一个像这样的文本文件:
void writeText(char* desc){
FILE * pFile;
pFile = fopen ("CycleTestInfo.txt","a+");
fputs (desc,pFile);
fclose(pFile);
}
我将它嵌入到for循环中,我想将文件写入我所在的循环:
for(int i=0; i<cycles; i++){
char* cycle="--NEW CYCLE "+(char)i+"---\r\n";
writeText(cycle);
}
但是,我在我声明error C2110: '+' : cannot add two pointers
的行中得到cycle
。如何声明变量以便我可以包含循环编号i
并在两侧添加字符串?
感谢您的帮助!
答案 0 :(得分:3)
您可以使用fprintf
将格式化文本写入文件:
fprintf(FILE, "--NEW CYCLE %d ---\r\n", i);
答案 1 :(得分:1)
这不是你在C ++中连接字符串的方式。
您可以使用sprintf
或std::string
。
后者更多是C ++ - ish ::
std::string cycle("--NEW CYCLE");
cycle += (char)i;
cycle += "---\r\r";
writeText(cycle.c_str();
请注意,您还必须将功能签名更改为:
void writeText(const char* desc)
因为string::c_str()
会返回const char*
。
或者您可以使用stringstream
,但在这种情况下这有点过分。值得研究一下。
您收到错误的原因是"--NEW CYCLE "
是C ++中的const char*
,而不是std::string
。
您可以编辑您的生产线:
const char* cycle= (std::string("--NEW CYCLE ")+(char)i+"---\r\n").c_str();
但我不会这样做。它看起来很难看。
答案 2 :(得分:1)
这不是C ++,即C. char *
不是字符串,它是指向char或几个char值的开头的指针。
在C ++中,您使用std::string
作为字符串类。
输出文本的正确方法是:
os << "--NEW CYCLE " << i << "---\r\n";
其中os
是输出流
如果要以这种方式创建字符串,请使用ostringstream
作为流类,然后使用.str()
从中获取字符串。