- 论坛徽章:
- 0
|
string verinum::as_string() const
{
assert( nbits_%8 == 0 );
if (nbits_ == 0)
return "";
string res;
bool leading_nuls = true;
for (unsigned idx = nbits_ ; idx > 0 ; idx -= 8 ) {
char char_val = 0;
V*bp = bits_+idx;
if (*(--bp) == V1) char_val |= 0x80;
if (*(--bp) == V1) char_val |= 0x40;
if (*(--bp) == V1) char_val |= 0x20;
if (*(--bp) == V1) char_val |= 0x10;
if (*(--bp) == V1) char_val |= 0x08;
if (*(--bp) == V1) char_val |= 0x04;
if (*(--bp) == V1) char_val |= 0x02;
if (*(--bp) == V1) char_val |= 0x01;
if (char_val == 0 && leading_nuls)
continue;
if (char_val == '"' || char_val == '\\') {
char tmp[5];
snprintf(tmp, sizeof tmp, "\\\%03o", char_val);
res = res + tmp;
} else if (char_val == ' ' || isgraph(char_val)) {
res = res + char_val;
} else {
char tmp[5];
snprintf(tmp, sizeof tmp, "\\\%03o", char_val);
res = res + tmp;
}
}
return res;
}
请问
1。标示代码中snprintf输出结果是怎样的?
[ 本帖最后由 fineamy 于 2008-7-26 11:50 编辑 ] |
|