- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
来自 Stroustrup 的 TC++PL,第 3 版,第 21.3.3 节:
If we try to read into a variable v and the operation fails, the value of v should be unchanged (it is unchanged if v is one of the types handled by istream or ostream member functions).
以下示例似乎与上述引用相矛盾。根据上面的引述,我期望 v 的值保持不变——但它被清零了。对这种明显矛盾的行为有何解释?
#include <iostream>
#include <sstream>
int main( )
{
std::stringstream ss;
ss << "The quick brown fox.";
int v = 123;
std::cout << "Before: " << v << "\n";
if( ss >> v )
{
std::cout << "Strange -- was successful at reading a word into an int!\n";
}
std::cout << "After: " << v << "\n";
if( ss.rdstate() & std::stringstream::eofbit ) std::cout << "state: eofbit\n";
if( ss.rdstate() & std::stringstream::failbit ) std::cout << "state: failbit\n";
if( ss.rdstate() & std::stringstream::badbit ) std::cout << "state: badbit\n";
return 1;
}
我使用 x86_64-w64-mingw32-g++.exe (rubenvb-4.7.2-release) 4.7.2 得到的输出是:
Before: 123
After: 0
state: failbit
谢谢。
最佳答案
来自 this reference :
If extraction fails (e.g. if a letter was entered where a digit is expected), value is left unmodified and failbit is set (until C++11)
If extraction fails, zero is written to value and failbit is set. If extraction results in the value too large or too small to fit in value, std::numeric_limits::max() or std::numeric_limits::min() is written and failbit flag is set. (since C++11)
您的编译器似乎是在 C++11 模式下编译,这改变了行为。
输入运算符使用语言环境方面 std::num_get
其 get
函数调用 do_get
.对于 C++11,指定使用 std::strtoll
等。阿尔。函数类型。在 C++11 之前,它显然使用了 std::scanf
样式解析(根据引用,我无法访问 C++03 规范)来提取数字。行为的变化是由于解析输入的这种变化。
关于c++ - 为什么 stringstream >> 在失败时更改目标值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551738/
我想通过下面的代码获取event.target.value。 class Detail { changeOwner(val: string){ console.log
我有一个简单的 jQuery 表单,使用来自 malsup ( http://jquery.malsup.com/form/ ) 的 jQuery 表单插件和用于测试的 ajax(如下)。 在我的页面
是否可以在不停止运行的情况下更改正在运行的过渡的目标位置或属性,使其像平滑过渡一样? 让我解释一个例子,假设我的初始动画如下: -webkit-transition:-webkit-transform
我正在使用 jQuery 创建一个滑动图像库,当给定一个数值时,“left”css 属性工作正常,但当给定一个变量时,它不会执行任何操作。这是我的代码: $(document).mousemove(f
我是一名优秀的程序员,十分优秀!