文件输入和输出

(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中提示的错误缘由:

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类型,存放的即为用户输入的文件名。

相关文章
相关标签/搜索