由于程序执行循环的次数正确,我们知道除法正在工作,但是我似乎无法获得字符串变量"结果中的任何内容的输出。"有什么帮助吗?
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int base,decimal,remainder;
string result;
cout <<"Welcome to the Base Converter. Please enter in the requested base from 2-16"<<endl;
cout <<"and an integer greater than or equal to zero and this will convert to the new base."<<endl
do
{
cout <<"Please enter the requested base from 2-16:"<<endl;
cin >>base;
}while (base<2 || base>16);
do
{
cout <<"Please enter the requested integer to convert from base 10:"<<endl;
cin >>decimal;
}while (decimal<0);
do
{
decimal=decimal/base;
remainder=decimal%base;
if (remainder<=9)
{
string remainder;
result=remainder+result;
}
else
{
switch(remainder)
{
case 10:
{
result="A"+result;
}
我的交换机还有一些案例,但我认为问题出在我的变量声明或我的字符串类中。任何明显的解决方案?
答案 0 :(得分:1)
您发布的代码不完整,如果没有看到其他功能,我无法确定这是否是正确的解决方案。但是,您在已发布的代码段中修改result
变量的方式显然不正确。
当您声明一个与给定上下文中的另一个变量同名的局部变量时,它会隐藏先前声明的变量。所以,如果你写
int remainder = 0;
std::string result = "";
if (remainder<=9)
{
std::string remainder; //this hides the outer-scope remainder variable for this code block
result=remainder+result;
}
它和你写的一样
result = "" + result;
这显然是无操作。
要将remainder
值添加到字符串之前,您应该这样做:
if (remainder<=9)
{
std::string remainder_str = std::to_string(remainder); //note different name and initialization value
result = remainder_str + result;
}
或只是
result = std::to_string(remainder) + result;
请注意,to_string自标题<string>
中的C ++ 11起可用。如果您无法使用C + 11,则可以使用itoa代替。