我有一些具有以下格式的.txt文件:
#Some comments here
bull rocket 3
trailer laker -12
#More comments there
Warriors Pacers 9
基本上,以#开头有一些注释
其他行包含两个字符串,后跟一个int
我需要那两个字符串和一个int一一处理
而且我必须忽略任何空行或以#开头的行
我正在考虑使用ifstream.get()来读取第一个字符和
如果它是#,则丢弃整行
但是我在数据方面陷入困境。我如何阅读字符
然后得到第一个字符串?即,我找到一个“b”,然后我需要
公牛”。我该怎么办?
谢谢
最佳答案
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
fstream f1("f1.data");
string line,w1,w2;
int num;
while ( getline(f1,line) ) {
if ( istringstream(line) >> w1 >> w2 >> num
&& w1[0] != '#' )
cout << w1 <<' '<< w2 <<' '<< num << '\n';
}
}
这是轻量级的文本扫描,而不是用于javascript解释器的词法分析器;透明胜于一切,因此请使用C++的各种部分将其纳入脚本语言中,以发挥最大优势。
关于c++ - 通过C++ fstream分隔.txt文件中的注释和数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15082383/