在C++中将一行转换为Node

convert a line to a Node in C++

本文关键字:一行 转换 Node C++      更新时间:2023-10-16

我正试图编写一个函数,将一行作为string并将其转换为Node

Node convertLineToNode(string line){
    char lineC[] = line;
    Node *n = new Node();
    n->lastname=strtok(lineC," ");
    n->name=strtok(lineC," ");
    n->ID=strtok(lineC," ");
 }

但是它不能正常工作。它期望string线作为char阵列。我无法将其转换为char数组。我的问题有什么解决办法吗?

C++的方式是:

Node* convertLineToNode(std::string const & line)
{
   std::istringstream iss(line);
   Node *n = new Node();
   iss >> n->lastname
       >> n->name
       >> n->ID;
   return n;
}

考虑返回一个shared_pointer,而不是原始的

string::c_str()将返回C字符串表示。

但是,我不使用c字符串库(strtok),而是考虑重写您的方法以使用std::string方法,甚至boost regex库。

这可能是因为n->lastname具有字符串数据类型。strtok返回char*,因此请确保您的数据结构与函数返回的内容完全一致。

如果可以复制节点,它也可以这样工作:

Node convert(string line) {
   Node n;
   n.lastname = "abc";
   return n;
 }

但Node需要支持复制:

Node n = convert("abc");

复制可以通过复制构造函数来实现。