题目描述:
从屏幕上接收16的倍数个字符串,回车后按照如下格式输出:
上图有箭头的地方就是要求有两个空,其它间隔一个空格,以16进制输出
/* 测试字符串 * abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl * */ #include <iostream> #include <string> #include <iomanip> using namespace std; int main() { string str; cout<<"请输入字符串:"<<endl; cin>>str; cout<<endl; if((str.size()%16) != 0){ /*注意鲁棒性*/ cout<<"输入的字符串不是16的整数倍"<<endl; return 1; } cout<<hex;/*以16进制显示,一次设置永久有效*/ for(int i=0,j=0;i<str.size();i++){ if(i%16 == 0){ if(i != 0) cout<<endl; cout<<setw(8)<<setfill('0')<<i<<' '; } if(i%16 <= 15){ if(i%8 == 0) cout<<' '; cout<<(int)str[i]<<' '; } if(i%16 == 15){ cout<<' '; for(int j=i-15;j<=i;j++) cout<<str[j]; cout<<endl; } } return 0; }