字符串流:dec int到hex到car的转换问题

stringstream: dec int to hex to car conversion issue

本文关键字:car 转换 问题 hex 字符串 dec int      更新时间:2023-10-16

当我遇到这个问题时,我正在尝试使用字符串流进行一些简单的练习。下面的程序获取一个int数,将其保存为十六进制格式的字符串流,然后显示字符串中是否有十进制的int和char。我为不同的输入运行了它,但其中一些输入无法正常工作。请参阅以下代码的详细信息:

#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main() {
  int roll;
  stringstream str_stream;
  cout << "enter an integern";
  cin>>roll;
  str_stream << hex << roll;
  if(str_stream>>dec>>roll){ 
    cout << "value of int is " << roll << "n";
  }
  else
    cout << "int not fount n";
  char y;
  if(str_stream>>y){
    cout << "value of char is "<<  y << endl; 
  }
  else
    cout << "char not found n";
  cout << str_stream.str() << "n";
}

我为3种不同的输入运行了它:Case1: { enter an integer 9 value of int is 9 char not found 9

案例2: enter an integer 31 value of int is 1 value of char is f 1f

案例3: enter an integer 12 int not fount char not found c

在情况1&2.程序按预期工作,但在情况3中,它应该找到一个char,我不确定为什么它不能在流中找到char。

谨致问候,Navnish

如果if(str_stream>>dec>>roll)无法读取任何内容,则流的状态设置为fail(false)。之后,除非使用clear()重置流的状态,否则使用该流的任何进一步读取操作都不会成功(并返回false)。

因此:

 .....//other code
 if(str_stream>>dec>>roll){ 
    cout << "value of int is " << roll << "n";
  }
  else
  {
    cout << "int not fount n";
    str_stream.clear();//*******clears the state of the stream,after reading failed*********
  }
  char y;
  if(str_stream>>y){
    cout << "value of char is "<<  y << endl; 
  }
  else
    cout << "char not found n";
....//other code