我编写了一个denary转换为十六进制转换器,并试图找到一种方法来删除内置函数的sprinf以及我使用的函数内置的stoi因为我使用c ++更多我被告知使用命名空间std是不好的做法但我不能想到一个这样做的方式而不破坏我的程序任何帮助将不胜感激。
我也将我的评论留在我的代码中以备将来的问题我应该删除这些还是在发布时留下它们
#include <iostream>
#include <string>
#pragma warning(disable:4996)
using namespace std;
int DecToHex(int Value) //this is my function
{
char *CharRes = new (char); //crestes the variable CharRes as a new char
//sprintf is part of the standard library
sprintf(CharRes, "%X", Value);
//char res is the place the concerted format will go
//value is the value i want to convert
//%X outputs a hex number
//snprintf covers the formatting of a string
int intResult = stoi(CharRes); //stoi is a function in the library
std::cout << intResult << std::endl; //print int results to the screen
return intResult; //returns int result
}
int main()
{
int a;
std::cout << "Please enter a number" << std::endl;
std::cin >> a; //stores the value of a
DecToHex(a); //runs the function
system("pause"); //pauses the system
return 0; //closes the program
}
C ++中的流已经内置了转换十进制/六进制等格式的函数。所以你可以这样做:
int main()
{
int a;
std::cout << "Please enter a number" << std::endl;
std::cin >> a; //stores the value of a
std::cout << std::hex; // Set the formating to hexadecimal
std::cout << a; // Put your variable in the stream
std::cout << std::dec;, // Return the format to decimal. If you want to keep the hexa format you don't havr to do this
std::cout << std::endl; // Append end line and flush the stream
/* This is strictly equivalent to : */
std::cout << std::hex << a << std::dec << std::endl;
system("pause"); //pauses the system
return 0; //closes the program
}
在流中使用std :: hex将以hexa打印值。使用std :: dec将以十进制格式打印该值。使用std :: octa将以八进制格式打印该值。
只需在函数前加上using namespace std
,就可以调用标准库中的任何函数,而无需使用std::
。例如,std::snprintf
,std::stoi
等。