正在分析文件I/O
Parsing File I/O
本文关键字:文件 更新时间:2023-10-16
我正在编写一个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]行,而这些值不在文本文件的行开头。任何帮助都将不胜感激。
首先需要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"
进行比较。
我会让你把它全部插在一起,然后计算出其余的。
创建一个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);
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到