从文本文件中读取并以分隔符分隔

时间:2018-04-05 00:39:47

标签: c++ c++11

我正在尝试从文本文件中读取,然后尝试将它们放在对象中。

但我不知道如何将一行分成两个变量(空格作为分隔符)。

文本文件格式如下(前2个条目):

    Text1 [txt1]
    This is a description of text 1.More description of Text 1 here blah       blah blah.

    Text2 [txt2]
    This is the description of text 2.

我想将它们放入三个sperate变量,一个用于名称(Text1),类型是方括号([txt1],最后是描述(这是对文本1的描述。)

到目前为止,我有以下代码,它没有单独的Text1和[txt1]:

    if (myfile.is_open()) {
    string buffer;
    string currentText= "empty";
    string currentType= "empty";
    string currentDescription = "empty";

    while (!myfile.eof()) {

        getline(myfile, buffer); // Would like to seprate this line into two variables
        currentText = buffer;
        if (buffer == "") continue;

        getline(myfile, buffer);
        currentDescription = buffer;
        if (buffer == "") continue;

        TextObj newtext(currentText, iWantToEnterTypeHere, currentDescription);
        this->textVector.push_back(newText);
    }
    myfile.close();

我希望这是有道理的,我会感激任何帮助。 干杯

1 个答案:

答案 0 :(得分:0)

#include <iostream>
#include <vector>
#include <sstream>
#include <fstream>

using namespace std;

int main() {
    fstream myfile;
    myfile.open ("example.txt");
    if (myfile.is_open()) {
        string line;
        while (getline (myfile,line)) {
        vector<string> tokens;
        const string s =  line;
        char delim =' ';
        stringstream ss(s);
        string item;
        while (getline(ss, item, delim)) {
            tokens.push_back(item);
        }   
        getline (myfile,line);
        tokens.push_back(line);
        //Here you can create object using token[0], token[1], token[2] and can remove cout statements
        for(int i = 0; i < tokens.size(); i++) {
                cout << tokens[i] << endl;
        } 
        cout<<"=================\n";
     }
    }
    myfile.close();
    return 1;
}

我希望这会有所帮助。您可以按注释块中的指定创建对象并删除co​​ut语句。添加它们只是为了补充说明。