C++ 类stringstream。无法理解lineStream的工作原理、参数;
我有下面的代码,我知道它是如何工作的,它是做什么的,但是,一点也不知道。我不明白这三条线是怎么工作的 std::stringstream-lineStream(行); 字符串单元; std::getline(行流,单元格“;”) 尤其是线状流; 我在谷歌上找到了它们,但没有足够的解释。请你解释一下他们的行为或者分享一个好的链接好吗?提前感谢,祝你有愉快的一天:) 这声明了类型为的名为C++ 类stringstream。无法理解lineStream的工作原理、参数;,c++,string,C++,String,我有下面的代码,我知道它是如何工作的,它是做什么的,但是,一点也不知道。我不明白这三条线是怎么工作的 std::stringstream-lineStream(行); 字符串单元; std::getline(行流,单元格“;”) 尤其是线状流; 我在谷歌上找到了它们,但没有足够的解释。请你解释一下他们的行为或者分享一个好的链接好吗?提前感谢,祝你有愉快的一天:) 这声明了类型为的名为lineStream的变量。它将行字符串传递给。std::stringstream类型使用流接口包装字符串。这意味
lineStream
的变量。它将行
字符串传递给。std::stringstream类型使用流接口包装字符串。这意味着您可以像对待cout
和cin
一样对待它,使用
从字符串中插入和提取内容。在这里,正在创建lineStream
,以便以后可以使用std::getline
提取其内容
std::string cell;
这只是声明了一个名为单元格的空std::string
std::getline(lineStream, cell, ';');
函数将从中提取行的流作为其第一个参数。第二个参数是一个std::string
,它将把行提取到其中。如果没有第三个参数,“行”的结尾被认为是我们看到换行符的地方。然而,通过传递第三个参数,这段代码使一行结束于代码>。因此,对std::getline
的调用将从流中提取所有内容,直到找到编码>字符并将该内容放入单元格
。然后丢弃代码>字符
这与上述代码非常相似:
std::ifstream data(filename);
std::string line;
std::getline(data, line);
在这里,流是一个文件流而不是字符串流,std::getline
将提取所有内容,直到换行符,因为没有给出第三个参数
这声明了类型为的名为lineStream
的变量。它将行
字符串传递给。std::stringstream
类型使用流接口包装字符串。这意味着您可以像对待cout
和cin
一样对待它,使用
从字符串中插入和提取内容。在这里,正在创建lineStream
,以便以后可以使用std::getline
提取其内容
std::string cell;
这只是声明了一个名为单元格的空std::string
std::getline(lineStream, cell, ';');
函数将从中提取行的流作为其第一个参数。第二个参数是一个std::string
,它将把行提取到其中。如果没有第三个参数,“行”的结尾被认为是我们看到换行符的地方。然而,通过传递第三个参数,这段代码使一行结束于代码>。因此,对std::getline
的调用将从流中提取所有内容,直到找到编码>字符并将该内容放入单元格
。然后丢弃代码>字符
这与上述代码非常相似:
std::ifstream data(filename);
std::string line;
std::getline(data, line);
这里,流是一个文件流而不是字符串流,std::getline
将提取所有内容,直到换行符,因为没有给出第三个参数。您不需要!data.eof()
在外部循环条件下,std::getline
调用将返回stream对象,它可以直接在布尔表达式中使用。至于您的问题,请阅读和。您不需要!data.eof()
在外部循环条件下,std::getline
调用将返回stream对象,它可以直接在布尔表达式中使用。至于您的问题,请阅读和。谢谢。这是否意味着stringstream lineStream与通常的string非常相似,但区别在于stringstream允许使用>>,并且对于getline和string很清楚,但对于streamstring@user3336406getline
必须将流作为其第一个参数<代码>行
不是一个流,因此您不能单独传递它。相反,您可以创建一个std::stringstream
,它为您给定的任何字符串提供一个流接口,然后您可以将该接口传递给getline
@user3336406std::stringstream
与std::string
-它与其他流类似,比如文件流,std::cout
和std::cin
等。使std::stringstream
有用的是它从std::string
流出来。谢谢你。这是否意味着stringstream lineStream与通常的string非常相似,但区别在于stringstream允许使用>>,并且对于getline和string很清楚,但对于streamstring@user3336406getline
必须将流作为其第一个参数<代码>行
不是一个流,因此您不能单独传递它。相反,您可以创建一个std::stringstream
,它为您给定的任何字符串提供一个流接口,然后您可以将该接口传递给getline
@user3336406std::stringstream
与std::string
-它与其他流类似,比如文件流,std::cout
和std::cin
等。使std::stringstream
有用的是它从std::string
流出来。