C 问号输出

C++ Question mark output

本文关键字:输出      更新时间:2023-10-16

我有一个简单的程序,可以将小数号转换为二进制数字。当我运行程序时,没有错误会出现,但是我确实会有一个问号。我应该得到一组诸如" 00101"之类的值,我正在尝试使用一个返回字符串的函数。这是我的代码

#include <iostream>
using namespace std;
#include <string>
string convert(int num)
{
    string binary;
    int remainder;
    while (num !=0 )
    {
        remainder = num % 2;
        num = num / 2;
        binary = remainder;
    }
    return binary;
}
int main()
{
   int number;
   string binaryNum;
   cout << "Enter a Number:";
   cin >> number;
   binaryNum = convert(number);
   cout << "This is your number in binary form:" << binaryNum << endl;
   system("pause");
}

有什么想法吗?感谢您的帮助

此代码有几个问题。首先,您使用线路binary = remainder上的=符号分配了字符串binary。您可能要写的是binary += remainder,以将其余的余数附加到字符串中。

第二个问题也在该行上。string::operator=string::operator+=都具有char的过载。当您通过int时,这些过载被称为。因此,将字符串设置为ASCII值为0或1的字符,因此问号字符,这不是您要寻找的内容。您可以使用std::to_string轻松将int转换为字符串。或者,如果您需要对格式的任何级别的控制,则可以使用std::ostringstream如此答案。

换句话说,将binary = remainder;更改为binary += std::to_string(remainder)

第三个问题:while循环中有一个返回语句。循环一次迭代后,该功能将返回,无论num有多大。删除该返回语句,因此convert函数的末尾只有一个。

您的代码存在一个基本问题。当您返回值时,while循环只会迭代一次。您应该每次与剩余的连接二进制价值,并在循环外部返回。而且我没有检查逻辑,所以请检查一下。