我编写的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]中不在文本文件行的开头。 任何帮助将不胜感激。
答案 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);
}