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