Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类stringstream。无法理解lineStream的工作原理、参数;_C++_String - Fatal编程技术网

C++ 类stringstream。无法理解lineStream的工作原理、参数;

C++ 类stringstream。无法理解lineStream的工作原理、参数;,c++,string,C++,String,我有下面的代码,我知道它是如何工作的,它是做什么的,但是,一点也不知道。我不明白这三条线是怎么工作的 std::stringstream-lineStream(行); 字符串单元; std::getline(行流,单元格“;”) 尤其是线状流; 我在谷歌上找到了它们,但没有足够的解释。请你解释一下他们的行为或者分享一个好的链接好吗?提前感谢,祝你有愉快的一天:) 这声明了类型为的名为lineStream的变量。它将行字符串传递给。std::stringstream类型使用流接口包装字符串。这意味

我有下面的代码,我知道它是如何工作的,它是做什么的,但是,一点也不知道。我不明白这三条线是怎么工作的 std::stringstream-lineStream(行); 字符串单元; 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
将提取所有内容,直到换行符,因为没有给出第三个参数

这声明了类型为的名为
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@user3336406
getline
必须将流作为其第一个参数<代码>行
不是一个流,因此您不能单独传递它。相反,您可以创建一个
std::stringstream
,它为您给定的任何字符串提供一个流接口,然后您可以将该接口传递给
getline
@user3336406
std::stringstream
std::string
-它与其他流类似,比如文件流,
std::cout
std::cin
等。使
std::stringstream
有用的是它从
std::string
流出来。谢谢你。这是否意味着stringstream lineStream与通常的string非常相似,但区别在于stringstream允许使用>>,并且对于getline和string很清楚,但对于streamstring@user3336406
getline
必须将流作为其第一个参数<代码>行
不是一个流,因此您不能单独传递它。相反,您可以创建一个
std::stringstream
,它为您给定的任何字符串提供一个流接口,然后您可以将该接口传递给
getline
@user3336406
std::stringstream
std::string
-它与其他流类似,比如文件流,
std::cout
std::cin
等。使
std::stringstream
有用的是它从
std::string
流出来。