在C++中将一行转换为Node
convert a line to a Node in C++
我正试图编写一个函数,将一行作为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");
复制可以通过复制构造函数来实现。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在 c++ 中将uint8_t数组转换为字符串以在一行中打印
- QT中不允许使用一行多个转换,例如qString到char*
- 如何在一行中将 cin 中的值转换为 vector.push_back()
- 转换为std :: string并在一行中获取const char *
- 将文件一行的每个元素转换为整数
- 在C++中一次一行地从文本文件中读取int(好的字符,然后转换)时出现问题
- 获取一行字符串并转换为浮点列表
- 将多行外壳脚本转换为一行命令
- 将一行cv::Mat转换为std::vector
- 希望我的代码逐行将矩阵元素转换为向量,它只将矩阵的最后一行显示为向量
- 将这一行从c++转换为c#
- 如何将这一行C语言转换成等价的c++语言
- 在C++中将一行转换为Node
- 将一行cv::Mat转换为int类型