解析字符串形成文本文件并将其分成c ++中的两个变量

时间:2016-11-05 16:17:27

标签: c++ parsing

我基本上需要逐行阅读一个包含学生姓名及其ID的文本文件。每个学生都是一个节点。我需要将名称和ID分成两个单独的变量,即值(名称)和密钥(ID)。问题是名称可以由名字和姓氏组成,也可以由名字,姓氏和中间名称组成,而某些名称可能只包含名字。无论名称有多少个部分,都需要在一个变量中。分隔符是"〜"在完整的名称和ID之间。我遇到的问题是,当我单独打印我的密钥时,所有学生都会打印出ID,但是当我还打印我的价值(姓名)时,ID&#39 ; s和名字从第29名学生开始打印(总共约200名学生)。为什么会发生这种情况,我该如何解决呢。

example of a few lines from the text where a,b,c are names:
a b c 12345678
a c 79399217




#include <string>
#include <fstream>
#include <sstream>
#include <iostream>

template<class T>
struct TreeNode
{
    std::string value;
    T key;
    TreeNode<T>* right;
    TreeNode<T>* left;
};


int main(int argc, char const *argv[])
{
    std::ifstream file_("names.txt");
    std::string line_;
    while(std::getline(file_, line_)){
        TreeNode<int>* n = new TreeNode<int>;
        std::string delimiter = "~";
        std::string node_value = line_.substr(0,line_.find(delimiter));
        n->value=node_value;
        std::stringstream linestream(line_);
        int node_key;
        std::getline(linestream, node_value, '\~');
        linestream>>node_key;
        n->key=node_key;
        std::cout<<n->key<<std::endl;
        std::cout<<n->value<<std::endl;
    }


    return 0;
}

0 个答案:

没有答案