写入文件Visual C ++

时间:2012-03-05 19:51:45

标签: visual-c++ text-files

我写了一个像这样的文本文件:

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并在两侧添加字符串?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以使用fprintf将格式化文本写入文件:

fprintf(FILE, "--NEW CYCLE %d ---\r\n", i);

答案 1 :(得分:1)

这不是你在C ++中连接字符串的方式。

您可以使用sprintfstd::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()从中获取字符串。