Announcement

Collapse
No announcement yet.

[C++] Hỏi về đọc và ghi file

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Hỏi về đọc và ghi file

    Xin chào các huynh, cái problem của đệ ở đây là sau khi đệ nhập 1 chuỗi và ghi vào file...thì cái file "string.txt" vẫn lưu lại 1 chuỗi...nhưng khi đệ đọc file thì nó print lên màn hình 2 chuỗi giống nhau.:shock:
    VD: đệ nhập "123" thì ct print ra "123123"...
    mong các huynh tận tình giúp đỡ!!!:love:
    Code của e nó đây ạ:
    PHP Code:
    int main()
    {
        
    string input,output;
        
    ofstream fileout("string.txt",ios::out);    //mo file string.txt de viet
        
    if(!fileout)//neu khong mo duoc
        
    {
            
    cout<<"can't open file"<<endl;
            return 
    0;
        }
        do
    //ghi chuoi vao file cho den khi nguoi dung nhap "e"
        
    {
            
    cout<<"nhap chuoi dy kung"<<" "<<endl;
            
    cin>>input;
            
    fileout<<input;//ghi chuoi vao file
        
    }while(input!="e" && fileout);
        
    cout<<endl;
        
    fileout.close();//dong file
        
    ifstream filein("string.txt",ios::in);//mo file de doc
        
    if(!filein)
        {
            
    cout<<"can't not open file"<<endl;
            return 
    0;
        }
        while(
    filein)
        {
            
    filein>>output;
            
    cout<<output<<endl;;
        }
        
    cout<<endl;
        
    filein.close();
        
    getch();


  • #2
    Code:
    #include<iostream>
    #include<string>
    #include<fstream>
    #include<conio.h>
    
    using namespace std;
    
    int main() 
    { 
        string input,output; 
        ofstream fileout("string.txt",ios::out);    //mo file string.txt de viet 
    
        if(!fileout)//neu khong mo duoc 
        { 
            cout<<"can't open file"<<endl; 
            return 0; 
        } 
    
        while(1)//ghi chuoi vao file cho den khi nguoi dung nhap "e" 
        { 
            cout<<"Enter a string: "<<" "<<endl; 
            getline(cin, input);
    		if(input=="e")
    			break;
            fileout<<input<<"\n";//ghi chuoi vao file 
    	} 
    
        cout<<endl; 
        fileout.close();//dong file 
        ifstream filein("string.txt",ios::in);//mo file de doc 
        if(!filein) 
        { 
            cout<<"can't not open file"<<endl; 
            return 0; 
        } 
        while(filein) 
        { 
            getline(filein, output); 
            cout<<output<<endl;; 
        } 
        cout<<endl; 
        filein.close(); 
        getch(); 
    }
    nếu đã dùng đến lớp string thì nên dùng getline(...) để đọc 1 chuỗi(chuỗi chứa đc dấu cách). nếu dùng e dạng như cin>>input thì chuỗi input sẽ kết thúc khi gặp dấu cách hoặc enter. vòng lặp nhập chuỗi nếu e để điều kiện như cũ thì chuỗi "e" sẽ đc ghi vao file trong mọi trường hợp( không phải ý đồ của tác giả nhỉ?). khi viết 1 chuỗi vào file thì e nên viết thêm 1 kí tự enter vào để cho chuỗi sau sẽ viết ở dòng mới trong file, như vậy sẽ tạo điều kiện cho việc đọc dễ dàng.
    11520327
    Lăng Hoài Sang
    Last edited by 11520327; 08-05-2013, 20:41.

    Comment


    • #3
      Ồ yeah!!! thanks huynh nhìu nhe.hehe.

      Comment


      • #4
        Ah huynh ơi!!! cái chỗ đọc file đó...nếu thay getline(filein, output) = filein>>output thì nó print ra màn hình 2 lần là sao vậy huynh...có thể giải thích thêm cho đệ hĩu được không?:love:
        VD đệ muốn nhập vào 1 số thì k thể dùng getline dc...dùng filein>>output thì nó cứ lặp lại phần tử cuối 2 lần ah...hjc
        12520471
        Võ Thanh Chính Trung
        Last edited by 12520471; 09-05-2013, 00:09.

        Comment


        • #5
          e nói rõ input/ouput.

          Comment


          • #6
            cái chỗ read file output đó huynh...nếu dùng filein>>out thì phần tử cuối cứ lặp lại 2 lần.hjc:cry:

            Comment


            • #7
              Các sư huynh đâu hết rùi ta :adore:

              Comment


              • #8
                Thay while(filein) thành else là nó chỉ hiện 1 dòng.
                :stick::stick:

                Comment

                LHQC

                Collapse
                Working...
                X