2012-10-16 236 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

相關問題