验证码:
std::istringstream ss(argv[2]);
ss >> blocks;
if (ss.fail() || 0 >= blocks) {
usage("Second parameter: must be a number,""and greater than zero"); // my custom method
return 1;
}
这里的行:ss>>blocks;
任何人都可以请指定其工作。ss不是对象吗,为什么我们要这样使用它,我们不是应该使用'.'来获取类变量或方法吗?
我是C++的新手,从Java开始,所以有点难以获得。
我已经将变量块定义为1作为其初始值。但它使用ss >>块进行更改。我想知道这条线的运作情况。
我理解了下面几行:
std::istringstream ss(argv[2]); // we are passing argument to constructor
ss >> blocks; // unable to get
ss.fail() // fail is the method in istringstream class which we are accessing using ss object.
2条答案
按热度按时间ubof19bj1#
你说过
我们不是应该用。来获取类变量或方法?
这是完全法律的Java
在Java中,+=运算符被重载,以便它对字符串起作用。类似的情况还有>>被重载了,这样它就可以在流上工作了。
在C++中,符号
A op x
,其中A
是一个对象,op
是一些运算符,x
是一些值,可以用来调用一个有两个参数的全局函数,或者一个有一个参数的方法。碰巧的是,在这种情况下,是后者。该方法导致从流中读取一个整数值并将其赋给传递的整数变量。alen0pnh2#
在C++中,
<<
和>>
分别是左移位运算符和右移位运算符。这些运算符用流重载以表示序列化和反序列化。ss >> blocks
将在blocks
中流式传输数字,直到遇到白色。参见:Processing strings using std::istringstream