所以我试图从文件中读取一些信息,但我一直很难做到这一点。这是我尝试阅读的文件的格式。
Name#Description
Name2#Description2 ...
NameX#DescriptionX
%
info1,info2,info3,info4 ...
infoX1,infoX2,infoX3,infoX4,
%
Keyword#Message
所以我要做的就是在每个#
之后拆分代码的第一部分,并将Name拆分为一个变量,将Description拆分为另一个变量。然后在第一个%
将每条信息分成它自己的变量之后。最后,在第二个%
之后将#
分开,就像上面那样,但不同的变量。
所以我尝试了while(getline(inFile, str, '%')
但是在第一行之后停止阅读然后转到%
下的任何内容。在这里遇到一些麻烦,所以任何帮助都会受到赞赏!
答案 0 :(得分:1)
下面是一个(非完整的)结构,说明如何解决这个问题:
#include <fstream>
#include <iostream>
#include <string>
int main(void) {
const char* in_file_path = "foo.txt";
std::ifstream in_file(in_file_path);
std::string buffer = "";
while (std::getline(in_file, buffer)) {
//parse input using `#` as separator...
if (buffer.at(0) == '%') {
// get position of `%` char in stream using (e.g.) in_file.seekg
break;
}
}
// after getting position of first `%` char in stream, this loop
// will start from this position in the file
while (std::getline(in_file, buffer)) {
// parse input using `,` as separator...
if (buffer.at(0) == `%`) {
// get position of `%` char in stream using (e.g.) in_file.seekg
break;
}
}
// ... and so on for as many separations as you need until you hit end of file
}
这取决于使用(例如)seekg
的{{1}}方法: