以下代码片段旨在尝试使用stringstream对象从字符串中提取整数,并检测整数提取是否成功. stringstream类继承>> operator返回对istream实例的引用.如果失败的整数提取导致myStream等于0,而其str成员仍然是strInput?
stringstream myStream(strInput);
if (myStream >> num){//successfull integer extraction}
else{//unsuccessfull integer extraction
cout<<myStream<<endl;
cout<<myStream.str().c_str()<<endl;}
解决方法:
有一个运算符bool()或运算符void *()用于流,它返回(类似于)!fail() – 或者在void *的情况下返回失败时的NULL.所以,如果流没有失败,那很好.操作符>>返回对流对象的引用,因此编译器说“嗯,无法将流对象与真实进行比较,让我们看看我们是否可以制作一个bool,或者从中取消*,是的,我们可以,所以让我们使用它.