我有一些具有以下格式的.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/

10-11 17:56