vc9下wstream不支持unget() ?

今天在写一个简单的算术表达式的解析器,遇到一些问题。发现貌似vc9下wcin不支持unget,一执行unget,stream就被设置为fail

  {
    wchar_t c=std::wcin.get();
    std::wcin.unget();
    if(std::wcin.fail()){
      std::cout<<"error"<<std::endl;
    }
  }

跟踪调试,发现是因为streambuf的gptr()和eback()函数返回的都是NULL。前者应该指向读缓存区的当前位置,后者应该指向读缓存区的开头。wifstream也是同样的问题。但是换了下,把wcin换成窄字符(std::cin),上述代码都可以正常工作。why ? 是不是我忘记调什么初始化函数了?

之所以专指vc,是因为在linux/gcc下没有遇到这样的问题。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥