c++ 我使用isstringstream对象将字符串转换为数字,但这一行(下面给出)是如何工作的,我无法理解

siv3szwd  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(117)

验证码:

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.
ubof19bj

ubof19bj1#

你说过
我们不是应该用。来获取类变量或方法?
这是完全法律的Java

string s = "hello ";
s += "john";

在Java中,+=运算符被重载,以便它对字符串起作用。类似的情况还有>>被重载了,这样它就可以在流上工作了。
在C++中,符号A op x,其中A是一个对象,op是一些运算符,x是一些值,可以用来调用一个有两个参数的全局函数,或者一个有一个参数的方法。碰巧的是,在这种情况下,是后者。该方法导致从流中读取一个整数值并将其赋给传递的整数变量。

alen0pnh

alen0pnh2#

在C++中,<<>>分别是左移位运算符和右移位运算符。这些运算符用流重载以表示序列化和反序列化。
ss >> blocks将在blocks中流式传输数字,直到遇到白色。
参见:Processing strings using std::istringstream

相关问题