解析文件I / O.

时间:2013-02-15 23:11:15

标签: c++ file-io io

我编写的C ++程序需要能够从.txt文件中读取,并解析输入以便能够从每一行获取命令和参数。

说我有Animals.txt

A cat1 3
A dog1 4
A cat2 1
D cat1

我希望能够获取此文件,然后为第一个字母创建一组if语句,以便我可以在主类中调用与第一个字母对应的函数,并传递其余的作为参数划线。

我正在尝试做的事情:

if(line[0].compare("A")==0){
    add(line[1],line[2]);
}
if(line[0].compare("D")==0){
    delete(line[1])
}

我曾尝试使用strtok和stringstream类,但要么我不知道如何实现我的需要,要么它们不能满足我的需要,因为值放在行[0]中不在文本文件行的开头。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先,您需要std::ifstream才能打开该文件。然后,您需要std::getline从文件中提取行:

std::ifstream file("Animals.txt");
std::string line;
while (std::getline(file, line)) {
  // ...
}

然后在while循环中,将行粘贴在std::stringstream中并提取所需的值:

std::stringstream ss(line);
char letter;
ss >> letter;
// And so on...

对于char,您可以在==语句中进行简单的if比较:

if (letter == 'A') {
  // ...
}

如果您将信件提取到std::string,请确保与"A"进行比较。

我会让你把所有东西都插在一起然后弄清楚其余部分。

答案 1 :(得分:0)

创建一个istringstream对象来分割每一行:

std::istringstream line(my_line);
std::string line0;
std::string line1;
std::string line2;

line >> token;
if (line0 == "A") {
    line >> line1 >> line2;
    add(line1, line2);
} else if (line0 == "D") {
    line >> line1;
    remove(line1);
}