-2

假设我想写和读这个值假设我想写

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!

4

1 回答 1

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

于 2013-12-13T03:14:30.920 回答