Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Xin giúp về cách ghi nội dung hàm vào file txt

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Mặc định Xin giúp về cách ghi nội dung hàm vào file txt

    Code:
    fstream fo;
    fo.open("dulieu.txt", ios::out);
    fo<<TinhBTA.inDanhSachPhuong(); //thắc mắc chỗ này, hàm này là: void inDanhSachPhuong();
    fo.close();
    Mình muốn ghi nội dung của hàm TinhBTA.inDanhSachPhuong(); vào trong file dulieu.txt.
    Nếu làm như trên thì báo lỗi vì fo<< không đọc đựoc như vậy.
    Hàm inDanhSachPhuong() của mình nếu chạy bình thường thì in ra được rồi, là:
    Code:
    P PH1 Phuong_So_1 15
    P PH2 Phuong_So_2 5
    Mình ko biết làm thế nào để lấy nội dung mà hàm inDachSachPhuong() hiển thị để cho vào file. Mong các bạn giúp đỡ.
    Đã được chỉnh sửa lần cuối bởi theanh3112 : 05-01-2009 lúc 10:11 PM.

  2. #2
    No Avatar
    ngocbig Khách

    Thiếu thông tin quá. Bạn sợ lộ code?

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Trích dẫn Nguyên bản được gửi bởi ngocbig Xem bài viết
    Thiếu thông tin quá. Bạn sợ lộ code?
    Hic, mình nghĩ thông tin như trên là đủ rùi chứ.
    trong hàm inDanhSachPhuong() mình in ra màn hình 1 chuỗi.
    Code:
    void inDanhSachPhuong()
    {
    cout<<"Day la vi du"<<endl;
    }
    ví dụ thế. Vậy làm sao để ghi nội dung hàm inDanhSachPhuong() đã hiển thị vào trong file dulieu.txt được ?

  4. #4
    No Avatar
    ngocbig Khách

    OMG! bạn xem lại bài post lúc đầu của bạn xem nếu nhìn vào có biết cái hàm inDanhSachPhuong trả về giá trị nào không mà trả lời bạn đc chứ. Giờ mình mới biết là nó không trả về giá trị gì.

    Giờ gợi ý cho bạn là cho các đối tượng đó vào một mảng và in từng giá trị một. Nếu bạn đưa cả code lên thì mọi chuyện chắc dễ dàng hơn nhiều

    Regards
    Đã được chỉnh sửa lần cuối bởi ngocbig : 05-01-2009 lúc 09:33 PM.

  5. #5
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    Cái hàm đó là thủ tục, chỉ có mỗi việc print cái dòng "Day la vi du" ra console, có trả về cái gì đâu mà đòi lấy nó làm tham số cho cái fstream << operator.
    Phá toái hư không - Bạch nhật thăng thiên.

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Mặc định Xin giúp về cách ghi nội dung hàm vào file txt

    Cảm ơn các bạn, vậy mình đưa cả code liên quan lên.
    Đây là class Phuong:
    Code:
    #include <string>
    using namespace std;
    #ifndef phuong_h_
    #define phuong_h_
    class Phuong
    {
    private:
    	string tenphuong;
    	int dansophuong;
    	string maphuong;
    public:			
    	Phuong();
    	Phuong(string map, string tenp, int dsp);
    	string layMaPhuong();
    	void suaThongTinPhuong(string map, string tenp, int dsp);
    	void layThongTinPhuong();
    	void datDanSoPhuong(int dsp);
    	int layDanSoPhuong();
    };
    #endif
    Đây là file Phuong.cpp
    Code:
    #include <iostream>
    #include "Phuong.h"
    void Phuong::layThongTinPhuong()
    {
    	cout<<"P "<<maphuong.data()<<" "<<tenphuong.data()<<" "<<dansophuong;
    }
    Tiếp đó, trong Tỉnh mình có lưu 1 danh sách liên kết về Phường và có hàm void inDanhSachPhuong(); => Hàm này mình sẽ gọi cái hàm inDanhSachPhuong() ở Phường ra. (Mình đã làm được rồi).

    void inDanhSachPhuong().

    Giờ muốn lấy nội dung in ra màn hình của hàm void inDanhSachPhuong() cho vào file thì làm như nào?
    (Mình ko biết nên cứ để void, nếu cần sửa gì thì mong các bạn giúp đỡ).

  7. #7
    No Avatar
    ngocbig Khách

    C++ Code:
    1. #include <string>
    2. #include <fstream>
    3.  
    4. using namespace std;
    5. #ifndef phuong_h_
    6. #define phuong_h_
    7. class Phuong
    8. {
    9. private:
    10.     string tenphuong;
    11.     int dansophuong;
    12.     string maphuong;
    13. public:        
    14.     Phuong();
    15.     Phuong(const string& map,const string& tenp, int dsp);
    16.     string layMaPhuong();
    17.     //====modified=======
    18.     string layTenPhuong();
    19.     //====end============
    20.     void suaThongTinPhuong(string map, string tenp, int dsp);
    21.     void layThongTinPhuong();
    22.     void datDanSoPhuong(int dsp);
    23.     int layDanSoPhuong();
    24.     friend ostream& operator<<(ostream& os,Phuong& p);
    25. };
    26. #endif

    C++ Code:
    1. #include "Phuong.h"
    2.  
    3. Phuong::Phuong()
    4. :tenphuong("chua biet"),
    5. maphuong("chua biet"),
    6. dansophuong(0)
    7. {}
    8. Phuong::Phuong(const string& map,const string& tenp, int dsp)
    9. :maphuong(map),
    10. tenphuong(tenp),
    11. dansophuong(dsp)
    12. {
    13.  
    14. }
    15. string Phuong::layMaPhuong()
    16. {
    17.     return maphuong;
    18. }
    19. string Phuong::layTenPhuong()
    20. {
    21.     return tenphuong;
    22. }
    23. void Phuong::suaThongTinPhuong(string map, string tenp, int dsp)
    24. {
    25.     //Hehe I won't do like this.
    26. }
    27. void Phuong::layThongTinPhuong()
    28. {
    29.     //Hehe I won't do like this.
    30. }
    31. void Phuong::datDanSoPhuong(int dsp)
    32. {
    33.     //do test dsp value here.
    34.     dansophuong = dsp;
    35. }
    36. int Phuong::layDanSoPhuong()
    37. {
    38.     return dansophuong;
    39. }
    40. ostream& operator<<(ostream& os,Phuong& p)
    41. {
    42.     os<<p.layMaPhuong()<<" "<<p.layTenPhuong()<<" "<<p.layDanSoPhuong();
    43.     return os;
    44. }
    C++ Code:
    1. #include<iostream>
    2. #include <fstream>
    3. #include <string>
    4. #include <vector>
    5. #include "Phuong.h"
    6.  
    7. using namespace std;
    8.  
    9. int main()
    10. {
    11.     vector<Phuong> cacPhuong;
    12.  
    13.     Phuong p1("P1","Phuong 1",200),
    14.         p2("P2","Phuong 2",400),
    15.         p3("P3","Phuong 3",100);
    16.    
    17.     cacPhuong.push_back(p1);
    18.     cacPhuong.push_back(p2);
    19.     cacPhuong.push_back(p3);
    20.  
    21.     ofstream dsp;
    22.     dsp.open("C:\\dsp.txt",ios::out);
    23.     for (unsigned int i=0;i<cacPhuong.size();i++)
    24.     {
    25.         dsp<<cacPhuong[i]<<endl;
    26.     }
    27.     dsp.close();
    28. }
    Đã được chỉnh sửa lần cuối bởi ngocbig : 05-01-2009 lúc 10:58 PM.

  8. #8
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Cảm ơn bác, em làm được rùi , nhưng làm theo cách khác ạ.
    À, em tiếp tục có câu hỏi sau:

    Đây là file dulieu.txt của em:
    Code:
    BTA Tinh_BTA
    H H1 Huyen_So_1
    X H1 XA1 Xa_So_1_Thuoc_Huyen_1 50
    X H1 XA2 Xa_So_2_Thuoc_Huyen_1 30
    X H1 XA3 Xa_So_3_Thuoc_huyen_1 20
    H H2 Huyen_So_2
    X H2 XXA Xa_A_Thuoc_Huyen_2 25
    X H2 XXB Xa_B_Thuoc_Huyen_2 35
    H H3 Huyen_So_3
    X H3 X1 Xa_1_Thuoc_Huyen_3 10
    X H3 X2 Xa_2_Thuoc_Huyen_3 10
    H HUYEN1 Huyen_Moi_Nhat
    X HUYEN1 HBT Huyen_2_Ba_Trung 500
    X HUYEN1 HDD Huyen_Dong_Da 500
    L LYA Ly_Duy_Nhat
    P PH1 Phuong_So_1 15
    P PH2 Phuong_So_2 5
    Tiếp là em có hàm sau:
    Code:
    void Tinh::ghiXa(char *tenfile)
    {
    	fstream xafin(tenfile, ios::in | ios::out);
    	while(!xafin.eof())
        {        
            string dulieu;
            xafin>>dulieu;		
            if( dulieu == "H" )
            {            
    			string mah, a;
                                           xafin>>mah;
    			cout<<mah.data()<<endl; //in ra mã huyện của từng dòng trong file dữ liệu. Chạy ngon rồi.			
    			xafin<<mah.data(); // chỗ này chưa được
            }
    	}	
    	xafin.close();
    }
    Đoạn hàm trên làm công việc: Đọc toàn bộ file, gặp ký tự "H" thì lấy ra mã của các Huyện trong file dulieu.txt, cụ thể là: H1, H2, H3, HUYEN1. Đã lấy thành công.

    Dòng tiếp theo chưa chạy được là: xafin<<mah.data() => Ý em dòng này sẽ thực hiện lệnh ghi các mã huyện vừa lấy được vào file mà không được.
    Để test, em ví dụ xafin<<"TEST TEST"; -> nó cũng chẳng ghi vào file dòng này.

    Nhưng khi thoát ra khỏi vòng while, gõ lệnh xafin<<"TEST TEST"; thì nó lại ghi được. Vậy em sai ở đâu ạ? Cách làm thế nào là đúng? Mong chỉ giúp em với.

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Quá tải toán tử << cho nó, in gì đó thì trả về 1 ostream& thì việc ghi file sẽ dễ dàng hơn, ví dụ :
    Java Code:
    1. #include <iostream>
    2. #include <string>
    3. #include <vector>
    4. #include <fstream>
    5.  
    6. using namespace std;
    7.  
    8. struct Something
    9. {
    10.     int    x;
    11.     string str;
    12. public :
    13.     Something( int x = 0, const string& str = "" )
    14.         :x( x ), str( str )
    15.     {   }
    16.  
    17.     ostream& show( ostream& o ) const
    18.     {
    19.         return o << x << " " << str << endl;
    20.     }
    21. };
    22.  
    23. inline
    24. ostream& operator <<( ostream& ouf, const Something& obj )
    25. {
    26.     return obj.show( ouf );
    27. }
    28.  
    29. int main()
    30. {
    31.     Something o( 1, "C++" );
    32.     ofstream out_file( "a.txt" );
    33.     out_file << o << endl;
    34.  
    35.     return 0;
    36. }
    Còn đoạn trên sai thì tui nghĩ do cậu thao tác trên 1 file, cậu đọc vào từ file đó rồi ghi ra file đó thì làm sao ?
    Đã được chỉnh sửa lần cuối bởi rox_rook : 08-01-2009 lúc 05:58 PM.

Các đề tài tương tự

  1. Bài tập C++ [Socket][Transfer File]Send và Recv file dung lượng lớn >100MB bị treo dialog
    Gửi bởi bear_hoang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 28-05-2013, 11:50 PM
  2. Bài tập C++ giúp e bài nối nội dung từ file này sang file khác vs
    Gửi bởi acer5750 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 08-09-2012, 01:51 AM
  3. ADO.NET Đọc tên file và nội dung file Excel?
    Gửi bởi lucas_it trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 31-05-2011, 11:25 AM
  4. Thay đổi Icon của file phụ thuộc nội dung của file?
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 14-12-2010, 04:45 PM
  5. Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần?
    Gửi bởi totoise trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 19-04-2009, 08:21 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn