删除命名空间std特别是sprintf在denary到hex C ++程序中

问题描述 投票:0回答:1

我编写了一个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++ binary hex std
1个回答
0
投票

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::snprintfstd::stoi等。

© www.soinside.com 2019 - 2024. All rights reserved.