022文字列タイプ(string)で表される小数を指定し、そのバイナリ表現を印刷する(keep it up)


文字列タイプ(string)で表される小数を指定し、そのバイナリ表現を印刷します.
この問題は文字列の合法性に注意する.
しかし、次のコードは無限ループの小数を処理していません.
無限ループ小数が現れるとwhile(other>0)は永久にtrueになる可能性があります
コード:
#include <iostream>
#include <string>

std::string to_binary_string(const std::string& vNumStr)
{
	std::string::size_type Pos = vNumStr.find('.');
	std::string IntPart = vNumStr.substr(0, Pos);
	std::string OtherPart = vNumStr.substr(Pos, vNumStr.length()-Pos);

	if (IntPart != "")
	{
		int Num = atoi(IntPart.c_str());
		IntPart = "";
		while (Num)
		{
			if (Num&1) IntPart = "1" + IntPart;
			else IntPart = "0" + IntPart;
			Num >>= 1;
		}
	}
	
    if (OtherPart.size() > 1)
	{
		int Other = atof(OtherPart.c_str());
		OtherPart = "";
		while (Other>0)
		{
			Other *= 2;
			if (Other>=1)
			{
				OtherPart += "1";
				Other -= 1;
			}
			else
			{
				OtherPart += "0";
			}
		}
	}

	return OtherPart.size() > 1 ? IntPart + OtherPart : IntPart;
}