类字符串流.无法理解lineStream的工作原理及其参数
Class stringstream. Cant understand how lineStream works, its parameters;
我有下面的代码,我知道它是如何工作的,也不知道它做什么。我不明白这三条线是怎么工作的std::stringstream lineStream(line);std::字符串单元格;std::getline(lineStream,cell,';')特别是lineStream one;我在谷歌上找到了它们,但没有充分的解释。你能解释一下他们的行为吗?或者分享一个好的链接?提前感谢,祝你今天愉快:)
container *begin = new container;
begin->beginBox = new box;
container *last = NULL;
std::ifstream data(filename);
std::string line;
std::getline(data, line);
for (container *i = begin; !data.eof() && std::getline(data, line);)
{
std::stringstream lineStream(line);
std::string cell;
std::getline(lineStream, cell, ';');
i->ID = atoi(cell.c_str());
for (box *j = i->beginBox; std::getline(lineStream, cell, ';'); j->next = new box, j = j->next)
{
j->apples = atoi(cell.c_str());
i->lastBox = j;
}
i->lastBox->next = NULL;
i->nextCont = new container(), last = i, i = i->nextCont, i->beginBox = new box;
}
setAutoIncrement(begin->ID + 1);
last->nextCont = NULL;
return begin;
std::stringstream lineStream(line);
这声明了一个名为lineStream
、类型为std::stringstream
的变量。它将line
字符串传递给它的构造函数(2)。std::stringstream
类型使用流接口封装字符串。这意味着您可以像对待cout
和cin
一样对待它,使用<<
和>>
从字符串中插入和提取内容。这里创建了lineStream
,以便以后可以使用std::getline
提取其内容。
std::string cell;
这只是声明了一个名为cell
的空std::string
。
std::getline(lineStream, cell, ';');
函数std::getline
(1)将从中提取一行的流作为其第一个参数。第二个参数是一个std::string
,它将把行提取到其中。如果没有第三个参数,"行"的结尾被认为是我们看到换行符的地方。然而,通过传递第三个参数,这段代码使得一行以;
结束。因此,这个对std::getline
的调用将从流中提取所有内容,直到它找到一个;
字符并将该内容放入cell
中。然后丢弃;
字符。
这与上面的代码非常相似:
std::ifstream data(filename);
std::string line;
std::getline(data, line);
这里,流是文件流,而不是字符串流,std::getline
将提取所有内容,直到换行符,因为没有给出第三个参数。
相关文章:
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 如何定义在用作函数参数时工作的类模板的转换
- C++20字符串文本模板参数工作示例
- C++中的可变参数模板及其工作原理
- std::bind,无法让具有单个参数的方法工作
- 隐式转换是否应该在模板参数的上下文中工作?
- 我不明白参数和参数如何协同工作
- 通过参数启用时,std::enabled_if 如何工作
- 当传递NULL作为参数时,函数重载是如何工作的
- GoogleTest 中的参数化测试无法按预期工作
- 此函数如何在不传递任何参数的情况下工作?
- 我的代码在作为参数传入 .begin() 时不起作用,但在我将 .begin() 转换为迭代器后工作
- C++11: 如何编写一个像 Get 一样工作的模板函数<tuple>...但是收到参数包?
- 参数传递和返回值如何在程序集级别的 x86 上的 C/C++ 中工作?
- 我可以更改将引用参数传递到指针中并使其正常工作的函数的输入(C、C++)吗?
- 工作函数重载如何使用可变参数解析?
- 宏参数的扩展如何在 c++ 中工作
- 错误太多参数无法正常工作
- 具有可变参数的std ::函数列表如何工作
- C++参数化构造函数使代码在传递大输入时停止工作