String 使用cout进行计算时未定义的行为

String 使用cout进行计算时未定义的行为,string,cout,String,Cout,我有一个空字符串 string A=""; cout<<A.size()-1; 字符串A=”“; cout您可以通过将其强制转换为int来获得预期的输出 cout << int(A.size()-1); coutstring::size返回无符号整数类型的size\t(与成员类型string::size\u类型相同)。所以答案是正确的。您需要的是一个有符号积分: cout << static_cast<int>(A.size())-1; 我很

我有一个空字符串

string A="";
cout<<A.size()-1;
字符串A=”“;

cout您可以通过将其强制转换为int来获得预期的输出

cout << int(A.size()-1);

coutstring::size返回无符号整数类型的size\t(与成员类型string::size\u类型相同)。所以答案是正确的。您需要的是一个有符号积分:

cout << static_cast<int>(A.size())-1;

我很好奇,为什么要从空字符串的大小中减去1?您打算如何使用结果?我正在解决一个问题,需要检查一个小于给定字符串大小的字符串,并且字符串也可能为空。我的密码破坏了他们的密码,我找不到原因