2013-12-13 61 views
-2

可以说,我要读写这个值 假设我想写读写文件处理C++包含多列

SEAT: 
NAME: 
CLASS: 
DEPR. TIME: 
ARRV. TIME: 
FROM: 
TO: 

============== ========因此,这是将在FILE.DOC =========可以看起来像

SEAT NAME   CLASS  DEPARTURE TIME ARRIVAL TIME FROM DESTINATION 

23 Janes Rowan  ECONOMY 11:30   17:30   NY  CHINA 

24 Robert Sulliman FIRST  12:30   18:30   LONDON JAPAN 

============= ================================================== ==================

而我想读

请输入您的姓名:简氏罗文

在屏幕上显示============================= === ================================

SEAT NAME   CLASS  DEPARTURE TIME ARRIVAL TIME FROM DESTINATION 

23 Janes Rowan  ECONOMY 11:30   17:30   NY  CHINA 

=========== ================================================== ===================

如何假设我在C++中的编程代码是?因为我面临着写入问题(保存在file.doc中)和搜索两个字以上的字符串,并在屏幕上显示整行。我也想知道如何删除整行,例如 请输入您的姓名以取消门票:Janes Rowan 因此,它会删除整行 我是初学者,因此希望任何人都可以帮助我。非常感谢XD!

回答

0

此代码符合您的规范,因为它给(我认为)。但这不可能是你需要的任务。但也许这里有一些你可以使用的想法。

我输入文件,db.txt:

SEAT NAME   CLASS  DEPARTURE TIME ARRIVAL TIME FROM DESTINATION 
23 Janes Rowan  ECONOMY 11:30   17:30   NY  CHINA 
24 Robert Sulliman FIRST  12:30   18:30   LONDON JAPAN 

我的解决办法,airline.cpp:

#include <algorithm> 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 

int main() { 
    // Read the database. 
    std::vector<std::string> database; 
    std::string str; 
    std::ifstream fin("db.txt"); 

    while (std::getline(fin, str)) { 
    database.push_back(str); } 

    // Print the database. 
    for (const auto& r : database) { 
    std::cout << r << "\n"; } 

    // Find. 
    std::cout << "Find name: "; 
    std::string find_query; 
    std::getline(std::cin, find_query); 

    std::cout << database[0] << "\n"; 
    for (const auto& r : database) { 
    if (r.find(find_query) != std::string::npos) { 
     std::cout << r << "\n"; } } 

    // Delete. 
    std::cout << "Delete name: "; 
    std::string delete_query; 
    std::getline(std::cin, delete_query); 

    database.erase(std::remove_if(std::begin(database), std::end(database), 
     [&](const std::string& s) { 
     return s.find(delete_query) != std::string::npos; }), 
     std::end(database)); 

    for (const auto& r : database) { 
     std::cout << r << "\n"; } 
} 

与GCC 4.8.2测试:g++ -Wall -Wextra -std=c++0x airline.cpp