(1)建立一个ofstream对象来管理输出流,相对于程序来讲,文本文件是外部文件,所以使用输出流输出到程序外部。ios
方法一: ofstream oftest; //使用无参构造函数进行初始化 char filename[6]="c:\\a.txt"; //注意转义字符的使用 ofstream.open(filename,ostream::app); //以添加模式打开文件 方法二: ofstream oftest("c:\\a.txt",ostream::app);
(2)将该对象与特定的文本文件关联起来。能够在构造函数中指定。c++
(3)使用该对象的“<<”运算符将字符输出到文件中,输出字符到文本文件的程序。app
代码示例:函数
#include<iostream> //cout
#include<fstream> //ofstream ifstream
#include<string> //c_str()
#include<cstdlib> //system()
using namespace std;
//不少时候看到程序常常是直接指定命名空间,而不是使用using语句,
//多是考虑到用户也可能会编写与std命名空间中的函数同名的函数spa
int main(){
//文件名
string filename;
cout<<"please input the filename"<<endl;
cin>>filename;
ofstream fout(filename.c_str());
fout<<"hello world, i am writing a file"<<endl;
fout.close();
ifstream fin(filename.c_str());
char ch;
while(fin.get(ch)){
cout<<ch;
}
cout<<endl;
fin.close();
system("pause"); //it can also be std::cin.get();
return 0;
}指针
c_str_百度百科
http://baike.baidu.com/view/1600698.htmcode
函数声明:const char *c_str();htm
c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.对象
这是为了与c语言兼容,在c语言中没有string类型,故必须经过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。ci
注意:必定要使用strcpy()函数 等来操做方法c_str()返回的指针
好比:最好不要这样:
char* c;
string s="1234";
c = s.c_str();
//c最后指向的内容是垃圾,由于s对象被析构,其内容被处理(纠正:s对象的析构是在对指针c完成赋值操做以后进行的,故此处并无编译错误)
在vc++2010中提示的错误缘由:
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str()); //第一个参数是目的,第二个是源
这样才不会出错,c_str()返回的是一个指向常量的指针,不能对其进行操做
c_str()返回的是一个分配给const char*的地址,其内容已设定为不可变动,若是再把此地址赋给一个能够变动内容的char*变量,就会产生冲突,在2010中是不被容许的。可是若是放入函数调用,或者直接输出,由于这些函数和输出都是把字符串指针做为 const char*引用的,因此不会有问题。 (note:在vs2010中不能够将一个const char*类型赋值给一个char*.
例(2)
c_str() 以const char* 类型返回 string 内含的字符串
若是一个函数要求char*参数,可使用c_str()方法:
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"
c_str在打开文件时的用处:
当须要打开一个由用户本身输入文件名的文件时,能够这样写:ifstream in(st.c_str());。其中st是string类型,存放的即为用户输入的文件名。