0
私のプロジェクトにBinary2String()
があります。Sprintf()エラー
これは長い間うまく動作します。しかし、vec[0] = 255
をsprintf(temp, "%02d ", vec[i]);
に設定すると例外が投げられました。このよう
オリジナルコード、
void Binary2String(const vector<unsigned char>& vec, string& result)
{
if(vec.size() == 0)
return;
for(size_t i = 0; i < vec.size(); i++)
{
char temp[4] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
}
}
は、その後、私はこのようにバグを修正したが、私はベクトルとのsprintf()完了を理解することはできません。
意味がありますか?値が3桁(%03d
がより適切であろう)まで行くことができるので、すべての
char temp[6] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
result.push_back(temp[3]);
result.push_back(temp[4]);
'%の03hhu'は、_most_適切であろう。 –
@Chris:true、答えを更新しました。 – Jon
チートシートありがとうございました。私は年齢のようなものが欲しかった。誰かがそれを書く時間を取っていたことを知らなかった。 –