0

可能重复:
将 int 附加到 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;
}
4

2 回答 2

3

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

std::stringstream ss;
ss << "Sun Type: " << getSunType() << "\nNo Of Earth Like Planets: "<<getNoOfEarthLikePlanets();
std::string s = ss.str();
于 2012-10-16T11:27:25.553 回答
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”。

另请参阅此问题

于 2012-10-16T11:32:10.193 回答