2012-10-16 180 views
0

可能重复:
Append an int to a std::string添加一个字符串和int一个字符串

我要添加字符串,并诠释了我的字符串。

在我的LocationData :: toString()方法中,我试图将一堆东西一起添加到我的字符串中str

它增加了第一个输入,它是一个字符串sunType,并添加了第二个输入,一个整数。 有编制没有问题,但是当我运行我的代码,输出是

孙类型:sunNo地球一样的行星:

它应该是

孙类型:

没有像地球的行星:

所以是有我的代码有问题吗? 我没有显示我的整个代码,因为它有些多么冗长。希望有人能回答我的谢谢!

#include <iostream> 
#include <string> 

using namespace std; 

class LocationData 
{ 
    private: 
    string sunType; 
    int noOfEarthLikePlanets; 
    int noOfEarthLikeMoons; 
    float aveParticulateDensity; 
    float avePlasmaDensity; 
    public: 
    string toString(); 

}; 

string LocationData::toString() 
{ 
    string str = "Sun Type: " + getSunType(); 
    str += "\nNo Of Earth Like Planets: " + getNoOfEarthLikePlanets(); 
    //str += "\nNo Of Earth Like Moons: " + getNoOfEarthLikeMoons(); 
    //str += "\nAve Particulate Density: " + getAveParticulateDensity(); 
    //str += "\nAve Plasma Density: " + getAvePlasmaDensity(); 
    return str; 
} 

int main() 
{ 

    cout<<test.toString()<<endl; 
} 
+3

为'int'添加到'std :: string'的可能性请参阅http://stackoverflow.com/questions/10516196/append-an-int-to-a-stdstring/10516313#10516313 – hmjd

回答

3

您正在向字符指针添加一个整数,该指针会使指针前进所述数字。使用std::stringstream来做到这一点,而不是做各种转换。事情是这样的:

std::stringstream ss; 
ss << "Sun Type: " << getSunType() << "\nNo Of Earth Like Planets: "<<getNoOfEarthLikePlanets(); 
std::string s = ss.str(); 
+0

呃这个应该写在我的主要权利?这是在学校的作业,我想这是做我所有的toString方法,并在我的主要方法比我会打电话并显示根据 –

+0

好thx测试和它的工作感谢:D –

1

的MWE使用stringstream

#include <sstream> 
#include <iostream> 
using namespace std; 

int main(){ 
    stringstream ss; 
    int i=40; 
    ss<<"Hi "; 
    ss<<i; 
    ss<<"bye"; 
    cout<<ss.str()<<endl; 
} 

输出 “嗨40bye”,符合市场预期。请参阅this question

相关问题