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

解析文件I/O 我编写一个C++程序,需要能够从.txt文件中读取,并解析输入,以便能够从每一行获取命令和参数。p>,c++,file-io,io,C++,File Io,Io,说我有动物 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和stringstre

说我有动物

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]行中。
任何帮助都将不胜感激。

首先,您需要
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...
对于
字符
您可以在
if
语句中进行简单的
==
比较:

if (letter == 'A') {
  // ...
}
如果将字母提取为
std::string
,请确保与
“a”
进行比较


我将让您将其全部插入并计算出其余部分。

创建一个
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);
}

嗯,你不知道如何根据自己的需要使用它们。你不会去实现它们;他们已经在那里了。听起来像是家庭作业问题?我认为你需要发布更多你已经编码和运行的内容,以获得有用的反馈;这是一个关键字。这真的很有帮助,但我实现了类似的东西,并且不断遇到问题,因为根据第一个字符,行可以有不同数量的参数。我是否通过将stringstream嵌套在if语句中来解决这个问题?任何指针都会有帮助。@user2073188将
std::stringstream
置于
if
语句之外,并读取第一个字符。然后,在
if
语句中,根据需要从
std::stringsteam
中提取更多内容。例如,如果您得到
A
,则执行
ss>>一些字符串>>一些int。如果你得到了
D
,只需做
ss>>一些字符串.stringstream在这种情况下似乎有点过火,他似乎不需要知道换行符在哪里are@MooingDuck当然,他们可以不用它。我喜欢这样做,因为它将从文件中提取一行和解析该行分离开来。当然,如果断线不能保证在那里,我不会这样做。@sftrabbit: