Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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++ istream get方法行为_C++_Istream - Fatal编程技术网

C++ istream get方法行为

C++ istream get方法行为,c++,istream,C++,Istream,我读了,但还是有疑问。假设我的分隔符实际上是空的“\0”字符,在这种情况下会发生什么?从我读到的: 如果找到定界字符,则它不会从输入序列中提取,而是保留为下一个要提取的字符。如果希望提取(并丢弃)此字符,请使用getline。表示c字符串结束的结尾空字符将自动附加到存储在s中的内容的末尾。 我之所以喜欢“get”而不是“readline”,是因为它能够将字符流提取到“streambuf”中。我不太明白您的问题 在msdn网站上,对于get函数,它说: 在所有情况下,分隔符既不是从流中提取的,也不

我读了,但还是有疑问。假设我的分隔符实际上是空的“\0”字符,在这种情况下会发生什么?从我读到的:

如果找到定界字符,则它不会从输入序列中提取,而是保留为下一个要提取的字符。如果希望提取(并丢弃)此字符,请使用getline。表示c字符串结束的结尾空字符将自动附加到存储在s中的内容的末尾。


我之所以喜欢“get”而不是“readline”,是因为它能够将字符流提取到“streambuf”中。

我不太明白您的问题

在msdn网站上,对于get函数,它说:

在所有情况下,分隔符既不是从流中提取的,也不是由函数返回的。相反,getline函数提取但不存储分隔符。 在所有情况下,分隔符既不是从流中提取的,也不是由函数返回的。相反,getline函数提取但不存储分隔符

我认为您不会有问题,因为msdn站点告诉您分隔符既不是从流中提取的,也不是从函数中返回的


或者我在这里遗漏了一点?

如果您有类似的内容,那么分隔符将不会卡在输入流中:

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}

如果以“\0”作为分隔符,且字符串不超过1024字节,则仅举一个例子。

那么,处理分隔符卡在输入流中的常见方法是什么?(你可以告诉我我是一个带有C++流的NOOB吗?)——<代码>。忽略(1)< /代码>似乎是合适的。谢谢Alxkr。我正在寻找一种基于将输入字符流传输到
streambuf
的解决方案,如果我理解正确,它将负责自动调整大小活动。