0

我编写了一个 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 类,但要么我不知道如何实现我的需要,要么它们不能满足我的需要,因为值被放入不在开头的 line[0] 中文本文件的行。任何帮助将非常感激。

4

2 回答 2

1

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

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

然后在 while 循环中,将行插入 astd::stringstream并提取您需要的值:

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

对于 a你可以在你的陈述char中做简单==的比较:if

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

如果您将字母提取到 astd::string中,请确保您与"A".

我会让你把它们都插在一起,然后弄清楚剩下的。

于 2013-02-15T23:18:37.420 回答
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);
}
于 2013-02-15T23:19:08.747 回答