したがって、 string には の値の型が付属していますchar
。値 type の文字列が必要ですunsigned char
。私がそのようなことを望む理由は、現在、16 進数の大きな入力を 10 進数に変換するプログラムを作成しており、文字列を使用して結果を計算しているためです。しかし、-128 から 127 までの char の範囲は小さすぎるため、代わりに 0 から 255 までの範囲の unsigned char が完全に機能します。次のコードを検討してください。
#include<iostream>
using namespace std;
int main()
{
typedef basic_string<unsigned char> u_string;
u_string x= "Hello!";
return 0;
}
しかし、私がコンパイルしようとすると、2 つのエラーが表示されます。 . (続きます)
編集:「「16 進数の大きな入力を 10 進数に変換する」という問題で、u_string を文字列リテラルで初期化する必要があるのはなぜですか?」計算中、16 進数の左にシフトするたびに 16 を掛けます。結果はせいぜい 16x9=144 になり、限界の 127 を超え、負の値になります。また、次のように初期化する必要があります。
x="0"; x[0] -='0';
値を0にしたいからです。変数が null の場合は操作を実行できません。変数が 0 の場合は実行できます。
それで、私は何をすべきですか?