C语言中为什么不能用fprintf将string类型写入文件?

VC环境,保存文件是.cpp,定义string name;后面用fprintf(fp,"%s",name); 但是编译错误…… 是不是C语言下不能用string类?

1、string类型是c++的STL中的类型,它用于处理字符串。C语言中使用的字符串是C风格的字符串,即末尾以’\0‘字符为结束符。

2、string类型的字符串,可以调用其成员函数c_str(),来将string类型的对象转成C风格的字符串。比如

#include <string>
#include <iostream>
using namespace std;
 
int main()
{
string sz_stl  = "hello world"; //string对象
cout<<sz_stl<<endl; //常规的C++中的输出string对象
printf(sz_stl.c_str()); //C风格的输出
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-21
可以用string类。
你应该是参数类型错误。fprintf需要的是个字符串指针。你要取得string中的字符指针。VC建议你用CString类型,更容易使用些。可以这么写:
fprintf( fp,"%s",name.getBuffer() );
第2个回答  2011-12-21
C++中string类转换成char*可以使用string::c_str()函数,你把语句改成fprintf(fp,"%s",name.c_str());应该就可以了。本回答被提问者和网友采纳