我基本上需要逐行阅读一个包含学生姓名及其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;
}