gpt4 book ai didi

c++ - 使用 putback 从 cin 中查看多个字符

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:20 25 4
gpt4 key购买 nike

我需要尝试从 std::istream(可能是 std::cin)中查看多个字符,所以我写了一个简单的循环来调用 get() 很多次,然后 putback() 很多次:

std::vector<char> peek_many(std::istream& is, int N) {
std::vector<char> data;
data.reserve(N);

for (int i = 0; i < N; ++i) {
data.push_back(is.get());
}

for (int i = 0; i < N; ++i) {
is.putback(data[N-i-1]);
}

return data;
}

这是否保证适用于所有 istream(无论我正在读取文件、cinistringstream 等)?如果不是,为什么不呢?

最佳答案

假设 1 个字符“宽”放回缓冲区是唯一安全的。您将不得不添加额外的抽象层以提供更多回放空间。

或者,如果您的流是可搜索的,您可以在开始试探性解析之前记住位置,然后返回到记住的位置。

关于c++ - 使用 putback 从 cin 中查看多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com