Итак, строка имеет тип значения char
. Я хочу строку типа значения unsigned char
. Почему я хочу такое, потому что в настоящее время я пишу программу, которая преобразует большой ввод шестнадцатеричного в десятичный, и я использую строки для вычисления результата. Но диапазон char, который от -128 до 127 слишком мал, неподписанный символ с диапазоном от 0 до 255 будет работать отлично. Рассмотрим этот код:basic_string of unsigned char Значение Тип
#include<iostream>
using namespace std;
int main()
{
typedef basic_string<unsigned char> u_string;
u_string x= "Hello!";
return 0;
}
Но когда я пытаюсь скомпилировать, он показывает 2 ошибки, одна _invalid преобразование сопзЬ полукокса * беззнаковое сопзЬ полукокса * _ и другой инициализирует аргумент 1 из станд: : basic_string < _CharT, _Traits, _Alloc> :: basic_string ... (это продолжается)
EDIT: «Почему проблема "преобразует большой вклад в шестнадцатеричной в десятичную" требуют инициализации u_string с строкового литерала ?» При вычислении каждый раз, когда i сдвигается влево от шестнадцатеричного числа, i умножается на 16. В лучшем случае результат будет равен 16x9 = 144, что превышает предел 127, и это делает его отрицательным. Кроме того, я должен инициализировать его следующим образом:
x = "0"; x [0] - = '0';
Потому что я хочу, чтобы оно имело значение 0. если переменная имеет значение null, то я не могу выполнять на ней операции, если она равна 0, то я могу.
Итак, что мне делать?
Почему проблема "преобразует большой вклад в шестнадцатеричной в десятичную" требуют инициализации 'u_string' с строковым литералом? –
@ Robᵩ см. Мое редактирование пожалуйста. – user2653125
@ user2653125 Ваше редактирование по-прежнему не объясняет, зачем вам нужен строковый литерал * для инициализации. – Angew