C++ (stringstream>;>;integer)究竟在什么条件下失败和成功?C++;

C++ (stringstream>;>;integer)究竟在什么条件下失败和成功?C++;,c++,converter,stringstream,C++,Converter,Stringstream,所以我试图理解(stringstream>>int变量)的真值是如何工作的。让代码如下所示: int number; stringstream convert("string"); if (convert >> number) {do something;} 请有人向我解释一下(convert>>number)究竟什么时候计算为真,什么时候计算为假,因为它与整数变量的成功初始化不同。为了澄清,我知道它为什么有效,因为它的计算结果是bool。问题是它到底是如何工作的。这个问题不涉及同

所以我试图理解(stringstream>>int变量)的真值是如何工作的。让代码如下所示:

int number;
stringstream convert("string");
if (convert >> number) {do something;}
请有人向我解释一下(convert>>number)究竟什么时候计算为真,什么时候计算为假,因为它与整数变量的成功初始化不同。为了澄清,我知道它为什么有效,因为它的计算结果是
bool
。问题是它到底是如何工作的。这个问题不涉及同一个问题

我见过类似的问题,但它们并没有解决这个问题。在测试过程中,我发现了一些不同于int变量正常初始化的方法。例如:

int number = 2147483648;
导致溢出,但分配仍然成功。另一方面

int number;
stringstream convert("2147483648");
(convert >> number)
计算结果为false。它与“正确”的初始化也不相同。比如说

unsigned int number;
stringstream convert("2147483648");
(convert >> number)
按预期计算为
true
,但

unsigned int number;
stringstream convert("-1");
(convert >> number)
计算结果也为true,即使
unsigned int
需要一个正值

还有什么不同?多谢各位

这提供了详细信息: