⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 十进制、八进制、二进制、十六进制的相互转换
💻 CPP
字号:
//#include "stdafx.h"
#include "windows.h"
#include <comutil.h>
#include "iostream.h"

#include "IData.h"

extern "C" const GUID CLSID_MyData = 
	{ 0x8556d3c8, 0x460f, 0x47cf, 
	{ 0x8f, 0x61, 0x77, 0xb8, 0x61, 0xb7, 0x64, 0x2d } };

// {E357F0E0-AE09-4a88-8F0A-1B3B419A790B}
extern "C" const GUID IID_IData = 
	{ 0xe357f0e0, 0xae09, 0x4a88, 
	{ 0x8f, 0xa, 0x1b, 0x3b, 0x41, 0x9a, 0x79, 0xb } };

extern "C" const GUID IID_IUnknown = 
		{ 0x00000000, 0x0000, 0x0000,
		{ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} } ;

int main(int argc, char* argv[])
{
	IClassFactory *pClf;
	IUnknown* pUnknown;
	HRESULT hResult;
	HRESULT pResult;
	HRESULT test;
	IData* pIData;

	if (CoInitialize(NULL) != S_OK)
	{
		cout<<"Initialize COM library failed!"<<endl;
		return -1;
	}
	
	GUID mydataCLSID;
	//IUnknown* pUnknown;
	hResult = ::CLSIDFromProgID(L"MyData.Object", &mydataCLSID);
	if (hResult != S_OK) 
	{
		cout<<"Can't find the data CLSID!"<<endl;
		return -2;
	}

	hResult = CoCreateInstance(mydataCLSID, NULL, 
		CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&pUnknown);

	if (hResult != S_OK) 
	{
		cout<<"Create object failed!"<<endl;
		return -2;
	}

	hResult = pUnknown->QueryInterface(IID_IData, (void **)&pIData);
	if (hResult != S_OK) {
		pUnknown->Release();
		cout<<"QueryInterface IData failed!"<<endl;
		return -3;
	}

	cout<<"请先阅读以下输入规则:"<<endl;
	cout<<"---要转换的数值必须注明进制数,以'x'标明。"<<endl;
	cout<<"例如:10x1234代表十进制数1234,8x1023代表八进制数1023。"<<endl;
	cout<<"---要转换的进制数以整数形式表示。"<<endl;
	cout<<"例如:2代表二进制,16代表十六进制。"<<endl;
	cout<<"---支持小数的操作。"<<endl;
	cout<<"---只能完成正数的任意数制之间的数值转换,负数请先自行转换为正数。"<<endl;
	cout<<"Now start!"<<endl;

	char inBuf[1024];
	int inputexp,outputexp;
	char choice;
	do
	{
		cout<<"请输入要进行转换的数值:";
		cin>>inBuf;
		char* datainput=new char[strlen(inBuf)+1];
		strcpy(datainput,inBuf);

		cout<<"请输入要转换的进制数:";
		cin>>outputexp;

		inputexp=pIData->ParseExp(datainput);
		if (inputexp==0)
		{
			cout<<"输入有误,请认真阅读输入规则!"<<endl;
			return -4;
		}
		pIData->Toten(inputexp);
		char* mResult=pIData->convertdata(outputexp);
 
		cout<<"转换的结果为:"<<mResult<<endl;
		cout<<"是否还需要服务?(Y/N):";
		cin>>choice;
		delete [] datainput;
	}while(choice=='y' || choice=='Y');



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -