文件輸入和輸出

(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類型,存放的即爲用戶輸入的文件名。

相關文章
相關標籤/搜索