1
我目前有一个函数可以从流中读取,直到找到预定义的stream-stopper。我目前能够启动并运行的唯一方法是使用std :: getline,然后将一个字符后跟一个换行符(在我的示例中为char(3)
)作为我的数据流阻止器。读取iostream直到找到字符串分隔符
std::string readuntil(std::istream& in) {
std::string text;
std::getline(in, text, char(3));
return text;
}
有没有什么办法可以达到同样的效果,但是用更大的字符串作为我的数据流?我不介意它必须跟着换行符,但我希望我的分隔符是一个大小不定的随机字符串,以便流中发生更改的概率非常低。
任何想法如何实现这一目标?
的[?分割在C++字符串(http://stackoverflow.com/questions/236129/split-a-string-in-c) – ForceBru
@ForceBru不完全重复的可能重复,因为我不想读取超过分隔符的流,以便在另一个时间可以读取分隔符之后的部分。 –
如果无法将整个文件加载到内存中,那么高效地执行此操作并非无足轻重。您可以重复填充一个缓冲区并检查,但是您需要允许缓冲区将您的搜索词限制为一半。 – Galik