2014-04-02 20 views
7

Chương trình của tôi cần tìm kiếm một từ trong tệp văn bản và nếu tìm từ đó, in ra/hiển thị toàn bộ dòng. Ví dụ:Cách tìm kiếm một từ trong tệp văn bản và nếu tìm thấy in toàn bộ dòng

 
employee name date joined position  project  annual salary 
tom jones   1/13/2011  accountant pricing   55000 
Susan lee   2/5/2007  Manager  policy   70000 

tài nhập một từ tìm kiếm:

kế toán

Chương trình tìm kiếm văn bản cho accountant. Khi nó tìm thấy nó, nó trả về những điều sau đây:

 
employee name date joined position  project  annual salary 
tom jones   1/13/2011  accountant pricing   55000 

Đây là mã tôi đã đưa ra nhưng nó không hoạt động.

void KeyWord(ifstream &FileSearch) 
{ 
    string letters; 
    int position =-1; 
    string line; 
    ifstream readSearch; 
    cout<<"enter search word "; 
    cin>>letters; 
    "\n"; 
    FileSearch.open("employee"); 
    if(FileSearch.is_open()) 
    { 
     while(getline(FileSearch, line)) 
     { 
      FileSearch>>line; 
      cout<<line<<endl; 
      position=line.find(letters,position+1); 
      if(position==string::npos); 
      if(FileSearch.eof()) 
       break; 

      cout<<line<<endl; 
     } 

    } 
    cout<<"Cant find"<<letters<<endl; 
} 

Trả lời

10

dễ dàng trả lời:

void Keyword(ifstream & stream, string token) { 
    string line; 
    while (getline(stream, line)) { 
     if (line.find(token) != string::npos) { 
      cout << line << endl; 
     } 
    } 
    cout << token << " not found" << endl; 
} 

Nói chung, tránh trộn < < và getline với nhau khi đọc từ một dòng suối như nó gây ra các vấn đề lạ với kết thúc dòng.

+0

cảm ơn tôi sẽ cố gắng này ngay bây giờ .. và repost kết quả, hoặc quesitons .. Tôi đoán nơi bạn có từ token..Im sẽ thay thế bằng chữ cái .. nơi tôi nhận được đầu vào từ người dùng ..? – Darius

+0

được cập nhật kể từ khi tôi nhận thấy một lỗi. Câu lệnh if phải có một chuỗi =! :: npos. Và yeah chỉ cần thay thế các chuỗi mã thông báo với bất cứ điều gì bạn đang tìm kiếm (kế toán trong ví dụ của bạn) – Kevin

+0

bạn có thể chỉ cho tôi nơi để đặt! = String :: npos ... – Darius

Các vấn đề liên quan