混乱将十进制转换为C 中的十六进制


#include <string>
#include <iostream>
using namespace std;
const string hexConversion = "0123456789ABCDEF";
int main() {
    int dec, remainder, quotient; 
    string hexNum = "";
    //input sequence
    cout << "Enter a decimal number: "; 
    cin >> dec; 
    quotient = dec; 
//conversion
    do {
        remainder = quotient % 16; 
        quotient /= 16; 
        hexNum.insert(0, hexConversion[remainder]); 
    } while (quotient != 0); 
    cout << "Your number in hex is " << hexNum << "."; 
}

我没有大量的编码经验,并感谢您对这个程序的错误见解!这是传达的错误:从" char"到'const char*'[-fpermissive]

的无效转换

您正在尝试使用std :: string :: insert的超载之一,但是它们都不接受int和char:

您的需求之一是接受位置,计数和符号,因此请致电hexNum.insert(0, 1, hexConverstion[remainder]);

如果您想使用以下功能:

iterator insert( iterator pos, CharT ch );

您需要使用:

hexNum.insert(hexNum.begin(), hexConverstion[remainder]); 

该错误即将出现,因为string::insertintchar作为参数没有这样的过载版本。

您可以使用此超载版本:

 string& insert (size_t pos, size_t n, char c);                                 

在您的情况下, n = 1在哪里,因为您只想添加一个字符。

iterator insert (iterator p, char c);

其中 p = hexNum.begin()

结帐http://www.cplusplus.com/reference/string/string/string/insert/

最新更新