C++ 检查字符串和长度
此代码假定只接受数字,并且数字必须正好是12个数字。第一种方法有效,但后一种方法无效。用户输入13个数字,但不显示任何错误C++ 检查字符串和长度,c++,std,eof,C++,Std,Eof,此代码假定只接受数字,并且数字必须正好是12个数字。第一种方法有效,但后一种方法无效。用户输入13个数字,但不显示任何错误 std::string line; double d; while (std::getline(std::cin, line)) { std::stringstream ss(line); if (ss >> d || line.size() == 12) { if
std::string line;
double d;
while (std::getline(std::cin, line))
{
std::stringstream ss(line);
if (ss >> d || line.size() == 12)
{
if (ss.eof())
{ // Success
break;
}
}
std::cout << "Error!" << std::endl;
}
std::字符串行;
双d;
while(std::getline(std::cin,line))
{
std::stringstream ss(线路);
如果(ss>>d | | line.size()==12)
{
if(ss.eof())
{//成功
打破
}
}
std::不能尝试和而不是或:
if (ss >> d && line.size() == 12)
尝试和而不是或:
if (ss >> d && line.size() == 12)
ss>>d
的返回值是多少?我猜ss
用于链接,但这不起作用。你是对的,ss>>d
返回ss
@JanDvorak:是的,ss>>d
返回ss
,可能是。转换运算符是从std::basic\u ios
继承的。我没有想过重载<代码>(BoL)< /Calp>运算符0io。在正常语言中,对象总是真的;-)jand Valk,一个非常方便和漂亮的C++ IMO特性。如果对象的内部状态表示它处于“坏/坏”状态。声明,然后在布尔条件下使用时,它应该计算为false。我认为这比总是将其计算为true更有意义。(ss>>d
的返回值是多少?ss
对于链接,我会猜测,但这不起作用。你是对的,ss>>d
返回ss
@JanDvorak:是的,ss>>“<代码> SS代码>代码> >。转换操作符继承自<代码> STD::Basic SuxIO/COD>。我还没有想到重载<代码>(BoL)< /C++ >运算符0io。在正常语言中,对象总是真的;-)Jand Valk,一个非常方便和漂亮的C++ IMO特性。如果对象的内部状态表示为“breaked/bad”状态,则在布尔条件下使用时,它的计算结果应为false。我认为这比始终将其计算为true更有意义。:)