| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:请教一个进制输入输出问题
只看楼主 加入收藏
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
 问题点数:0 回复次数:3 
请教一个进制输入输出问题

学习了C++有一段时间,却发现有些基本问题还是不过关,下面向大家请教一个问题:

输入八进制,十六进制数,并用十进制,八进制,十六进制分别输出这些数;

请问用cin怎样输入八进制,十六进制数,可否用cin.flags(ios::oct) 和 cin.flags(ios::hex)控制输入, 不过好像输出不了,我输出的时候也用了cout.flags(ios::oct) 和cout.flags(ios::oct)

搜索更多相关主题的帖子: 进制 ios oct flags 
2004-12-14 20:38
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 

这是我的一道作业,请大伙帮我看一下,运行时有一点问题(就是上面说的问题),我用的Visual studio.net 2003

//-------------stdafx.h---------------

#include <iostream> #include <iomanip> #include <tchar.h>

using namespace std;

//Number.h

class CNumber { public: CNumber(void); ~CNumber(void); protected: int *fNumber,precision; double pNumber; char *fString; public: void Enter(void); void Print1(void); void Print2(void); };

//------------Number.cpp------------------

#include "StdAfx.h" #include ".\number.h" #using <mscorlib.dll>

CNumber::CNumber(void) : fNumber(NULL) , fString(NULL) , precision(0) { }

CNumber::~CNumber(void) { if(fNumber) delete []fNumber; if(fString) delete []fString; }

void CNumber::Enter(void) { cout<<"请分别以十进制,八进制,十六进制输入三个数:"; for(int i=0;i<3;i++) { if(i==0) cin>>fNumber[i]; if(i==1) {cin.get();cin.flags(ios::oct|ios::showbase); cin>>fNumber[i];} if(i==2) {cin.get();cin.flags(ios::hex|ios::showbase); cin>>fNumber[i];} } cout<<"输入一个浮点数并指定精度:"; cin>>pNumber>>precision; cin.get(); cout<<"输入一串字符:"; fString=new char[30]; cin.getline(fString,30); }

void CNumber::Print1(void) { ///---------用流成员函数--------- cout<<'\n'<<"以左和右对齐的方式输出整数(域宽为12):"<<endl; for(int i=0;i<3;i++) { cout.width(12); cout.flags(ios::dec); cout.setf(ios::left); cout<<fNumber[i]<<"\t"; } cout<<endl; for(int i=0;i<3;i++) { cout.width(12); cout.flags(ios::dec); cout.setf(ios::right); cout<<fNumber[i]<<"\t"; } cout<<'\n'<<"以八进制、十进制、十六进制输出整数:"<<endl; for(int i=0;i<3;i++) { cout<<fNumber[i]<<"\t"; cout.setf(ios::oct|ios::showbase); cout<<fNumber[i]<<"\t"; cout.flags(ios::hex|ios::showbase); cout<<fNumber[i]<<endl; } cout<<'\n'<<"浮点数的输出:"<<endl; cout.precision(precision); cout.setf(ios::scientific); cout<<"指数格式:"<<pNumber<<endl; cout.setf(ios::fixed,ios::floatfield); cout<<"定点格式:"<<pNumber<<endl; cout<<'\n'<<"输出字符串:"; cout<<fString<<endl; }

//------------aa.cpp----------------

#include "stdafx.h" #include "Number.h" #using <mscorlib.dll>

int _tmain() { // TOD 请用您自己的代码替换下面的示例代码。 CNumber data; data.Enter(); data.Print1(); return 0; }

2004-12-14 21:20
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 

我修改了一下,情况有所好转:

void CNumber::Enter(void) {//在这里加一句:fNumber=new int[3];

cout<<"请分别以十进制,八进制,十六进制输入三个数:"; .........

// 以下这句前加一句:cin.get();

cout<<"输入一个浮点数并指定精度:"; cin>>pNumber>>precision; cin.get();       //问题就是,这里的cin.get(); 好像不起作用,当输入完浮点数                           cout<<"输入一串字符:";    和精度后,就全部输出了,不能输入字符串 fString=new char[30]; cin.getline(fString,30); }

2004-12-14 21:56
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 
怎么没人应呢,live41老大,帮我看看好吗
2004-12-15 21:54
快速回复:请教一个进制输入输出问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049734 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved