使用std :: stringstream时出现意外结果

时间:2016-11-25 18:36:11

标签: c++ debugging stringstream

我是C ++的初学者,上周开始。我正在尝试制作一个简单的程序,将英寸转换为英寸符号:例如62变成5'2“。但是当我尝试编译时,我在第8行有一些错误。我不知道它是什么。提前谢谢。

#include <iostream>
#include <sstream>
using namespace std;
string ConvertToFootInchMeasure (int totalInches){
    string feet = ""+totalInches/12;
    string inches = "" + totalInches%12;
    stringstream converted;
    conveted<<feet;
    converted<<"'";
    converted<<inches;
    converted<<"\"";
    return converted.str();
} 

1 个答案:

答案 0 :(得分:3)

该代码可以像这样轻松修复:

string ConvertToFootInchMeasure (int totalInches){
    stringstream converted;
    // Do inline calculations and use formatted text output for the results
    converted << (totalInches/12) << "'" << (totalInches%12) << "\"";
    return converted.str();
}

进一步解释:您尝试将totalInches/12totalInches%12操作的数字结果连接到std::string变量,但该语句的右侧并未执行此操作这一点。

注意:

std::string operator+(std::string, char c)在您尝试使用时,不会将数字转换为字符串和连接:

string feet = ""+totalInches/12;

在你的情况下似乎更糟糕,因为术语

""+totalInches/12

const char*指针执行指针算术,并且string变量从例如"" + (62/12)初始化。指针地址{{1}}。