调用 std::cin.putback(), std::cin.unget() 之前不进行读取操作是否安全?

Is it safe to call std::cin.putback(), std::cin.unget() without preceding them with a read operation?

调用 std::cin.putback 而不用读取操作撤消它是否安全?

std::cin.unget(); // is it safe?

char c{};
std::cin.putback('V');
std::cin.get(c);
std::put(c); // V

它不是未定义的。类似于流上的其他异常行为(如到达 EOF 后读取字符),它使流“坏”。

你可以试试:

std::cout << std::cin.fail(); // 0
std::cin.unget(); 
std::cout << std::cin.fail(); // 1