作者:沿无际空间 | 来源:互联网 | 2022-12-02 18:39
我有一个函数返回一个字节的二进制表示:
std::string ToBinary(unsigned char &Num)
{
char str[8];
char Symb = 0;
int i = 0;
while (i<8)
{
_asm
{
//push al
shr byte[Num], 1
mov al, 0
adc al, 30h
mov byte[Symb], al
//pop al
}
str[7-i] = Symb;
i++;
}
return std::string(str);
}
它的电话是:
std::string BinOut = ToBinary(ByteValue);
问题是,它不是获取8-char字符串,而是返回14-char字符串.显然,函数str内部显示正确的值.如何让它返回8个字符?
1> eerorika..:
其构造函数std::string
接受指针,char
要求指向的字符串为空终止.您str
的null不会终止,因此程序的行为是未定义的.
你也可以
使用a char[9]
并将最后一个字符设置为'\0'
.仅当str
不包含任何零字节时才有效,因为第一个字节将是终结符.
或者使用std::string(char *s, std::size_t count)
没有这种要求的构造函数.