基于C++文本文件的数据库读取

Sha*_*ark 1 c++ arrays text-files

我需要C++中的简单程序,它将打开文本文件并逐行查找第二个参数.

文本内容:

1, red
2, blue
3, green
4, orange
Run Code Online (Sandbox Code Playgroud)

所以我需要一个逐行的程序,每行转换成数组(两个元素),然后比较第一个元素和用户交互插入的数字.

因此,如果用户插入2,它逐行,比较阵列行的第一个元素,如果匹配,它打印数组中的第二个元素(蓝色),如果用户键入3,它打印绿色...

我一直在用PHP工作,而且比这更容易,所以我现在有点困惑了......:/

Mar*_*man 5

干得好:

#include <iostream>
#include <fstream>
#include <map>
#include <sstream>

int main(int argc, char* argv[]) {
  if (argc != 2) {
    std::cerr << "Usage: test [inputfile]" << std::endl;
    return 1;
  }
  std::fstream stream(argv[1]);
  if (!stream.good()) {
    std::cerr << "Error: could not open file: " << argv[1] << std::endl;
    return 2;
  }
  std::string line;
  std::map<int, std::string> map;
  while (std::getline(stream, line)) {
    std::string::size_type pos = line.find(',');
    std::stringstream sstream(line.substr(0, pos));
    int index;
    sstream >> index;
    map[index] = line.substr(pos+2);
  }
  int in;
  while (std::cin >> in) {
    std::map<int, std::string>::iterator i = map.find(in);
    if (i == map.end())
      std::cerr << "index not found" << std::endl;
    else
      std::cout << i->second << std::endl;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是无益的,因为OP不会从向他提供一个完整的解决方案中学到很多东西(问题本身就是如此微不足道,以至于它只适合学习).让他思考他真正的问题是什么(并回答那些问题)更有用. (2认同)
  • 我有一个类似的问题,这篇文章实际上是有帮助的.让那些有问题的人决定什么是有用的,什么不是,而不是让他们符合我们订阅的任何教育理论.如果有人愿意花时间"给我写一些代码",实际上有用的代码,它们应该受到赞扬.并不是说引导人们逐行找到答案是一种不好的方法,但它并不是唯一的"正确"方法. (2认同)