将字符串和int添加到字符串中

时间:2012-10-16 11:22:05

标签: c++ string int

  

可能重复:
  Append an int to a std::string

我想在字符串中添加string和int。

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

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

太阳类型:地球的太阳没有行星:

应该是

太阳类型:

地球不像行星:

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

#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;
}

2 个答案:

答案 0 :(得分:3)

您正在向字符指针添加一个整数,该指针使指针前进所述数字。使用std::stringstream执行此操作,而不是进行各种转换。像这样:

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

答案 1 :(得分:1)

使用stringstream的MWE:

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

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

按预期输出“Hi 40bye”。

另见this question