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

Đề tài: cách đọc 1 chuỗi có định dạng trước bằng fstream c++

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    8

    Mặc định cách đọc 1 chuỗi có định dạng trước bằng fstream c++

    bây h mình có 1 file input.txt như sau:
    0 3
    girl,con gai
    run,chay
    love, tinh yeu
    2 cái số thì dễ rùi,mình mún đọc từ girl vào biến a,con gái vào biến b,run vào biến c....
    nói chung là đọc sao cho 2 từ trên 1 dòng thì ngăn cách nhau bới dấu phẩy.
    girl,con gai thì a="girl" và b="con gái".ai chỉ dùm mình,thanks!

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Bạn có thể dùng isstringstream để tách chuỗi với những kí tự khác nhau như sau:
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. #include <utility>
    4. #include <vector>
    5. #include <cstdlib>
    6. #include <algorithm>
    7. #include <sstream>
    8. #include <fstream>
    9.  
    10. using namespace std;
    11.  
    12. vector<pair<string, string>> read_file(ifstream &inf) {
    13.     vector<pair<string, string>> result;
    14.     string line;
    15.     pair<string, string> p;
    16.     istringstream ss;
    17.  
    18.     while (getline(inf, line)) {
    19.         istringstream ss(line);
    20.         getline(ss, p.first, ',');
    21.         getline(ss, p.second);
    22.         result.push_back(p);
    23.     }
    24.     return result; 
    25. }
    26.  
    27. void print(const pair<string, string> &p) {
    28.     cout << p.first << ", " << p.second << '\n';
    29. }
    30.  
    31. int main() {
    32.     ifstream inf("in.txt");
    33.     if (!inf) {
    34.         cerr << "File not found.\n";
    35.         exit(1);
    36.     }
    37.     vector<pair<string, string>> result = read_file(inf);
    38.     for_each(result.begin(), result.end(), print);
    39. }
    Đoạn trên mình trả về một pair dữ liệu gồm 2 chuỗi, bạn thích xử lý thế nào thì tùy chỉnh lại nhé. Mình dùng std::C++11 nên hai dấu >> trong khai báo vector<pair<string, string>> có thể đi liền nhau, nếu bạn dùng C++99, thì bạn phải thêm một khoảng trắng vào giữa. "> >"

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    38

    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. #include <fstream>
    4. #include <vector>
    5. #include <cctype>
    6.  
    7. using namespace std;
    8.  
    9. int main()
    10. {
    11.         string filename;
    12.         string buff ;
    13.         fstream in;
    14.         vector < string > list;
    15.  
    16.         cout << "Nhap ten file can doc:" << endl;
    17.         getline ( cin, filename );
    18.  
    19.         in.open ( filename.c_str() , ios::in ) ;
    20.         if ( ! in.is_open () )
    21.         {
    22.                 cout << "Khong mo dc file \""<< filename << "\""<< endl;
    23.                 return -1;
    24.         }
    25.  
    26.         int i,k;
    27.         while ( ! in.eof () )
    28.         {
    29.                 getline ( in , buff );
    30.                 for ( i = 0 , k = 0 ; i < buff.length() ; i++ )
    31.                 {
    32.                         if ( buff[i] == ',' | buff [i] == ' ' )
    33.                         {
    34.                                 list.push_back ( buff.substr (k, i -k) );
    35.                                 while (  ! isalnum ( buff[i] )  &&  i < buff.length()  ) i ++ ;
    36.                                 k = i  ;
    37.                         }
    38.                         if  ( i == buff.length() - 1 ) list.push_back ( buff.substr (k, i - k + 1) );
    39.                 }
    40.         }
    41.  
    42.         for ( i = 0 ; i  < list.size() ; i ++ )
    43.         cout<< "list["<< i << "] = \"" << list[i] << "\""<< endl;
    44.  
    45.         return 0;
    46. }
    Code mình "hiền" hơn code của bạn trên chút, có lẽ bạn xem dễ hiểu hơn

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

  1. Giúp em lỗi C++ này với:no matching function for call to `fstream::fstream (const char[14])'
    Gửi bởi tuongbk trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 07-07-2013, 05:12 PM
  2. Cách sử dụng con trỏ chỉ vị trong fstream để trở về vị trí ban đầu
    Gửi bởi toan1211 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 25-02-2013, 10:22 AM
  3. Bài tập C++ bài tập liên quan đến fstream.h
    Gửi bởi kukopuka trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-11-2010, 01:08 AM
  4. Lập trình C++ Lớp fstream, các hàm và công dụng
    Gửi bởi vietduc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 13-04-2010, 08:51 AM
  5. Lập trình C++ | Định dạng văn bản với fstream.h ?
    Gửi bởi nguyenvu_101 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 21-04-2009, 10:03 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