在C++中如何将字符串和整数拼接起来?

3
我尝试将字符串和整数连接起来,如下所示:
#include "Truck.h"
#include <string>
#include <iostream>

using namespace std;

Truck::Truck (string n, string m, int y)
{
    name = n;
    model = m;
    year = y;
    miles = 0;
}

string Truck :: toString()
{

    string truckString =  "Manufacturer's Name: " + name + ", Model Name: " + model + ", Model Year: " + year ", Miles: " + miles;
    return truckString;
}

I am getting this error:

error: invalid operands to binary expression ('basic_string<char, std::char_traits<char>, std::allocator<char> >'
      and 'int')
        string truckString =  "Manufacturer's Name: " + name + ", Model Name: " + model + ", Model Year: " + year ", Miles...

你有任何想法我做错了什么吗?我是C++的新手。


3
请使用std::to_string或字符串流。 - chris
@chris,我尝试了,但是出现了这个错误:error: no member named 'to_string' in namespace 'std'。 - user1471980
我今天早些时候遇到了这个问题,并发现根据您的编译器设置,由于某种原因,您可能无法访问 "to_string"。请查看字符串流以进行从“int”到“string”的转换:http://www.cplusplus.com/articles/D9j2Nwbp/ - CoderDake
@user1471980,这是C++11中的<string>。旧版本的GCC也可能会出现问题。 - chris
你不应该将字符串和整数进行拼接。可以将字符串与其他字符串拼接,其中一些字符串可能是整数的字符表示,但它们本身并不是整数。许多语言(包括Java和C++)通过在使用特定运算符时将整数隐式转换为其字符串表示来帮助您解决这个问题。 - Hot Licks
boost::lexical_cast 对于这个目的也非常有用。 - Slava
3个回答

15

在C++03中,正如其他人已经提到的那样,您可以使用ostringstream类型,该类型定义在<sstream>中:

std::ostringstream stream;
stream << "Mixed data, like this int: " << 137;
std::string result = stream.str();

在 C++11 中,您可以使用方便地在 <string> 中声明的 std::to_string 函数:

std::string result = "Adding things is this much fun: " + std::to_string(137);

希望这有所帮助!


2
std::stringstream s;
s << "Manufacturer's Name: " << name
  << ", Model Name: " << model
  << ", Model Year: " << year
  << ", Miles: " << miles;

s.str();

请确保您的代码缩进四个空格,或按CTRL+K自动缩进。否则,它将被解释为纯文本。请参阅格式帮助 - dyp

2
使用 std::ostringstream
std::string name, model;
int year, miles;
...
std::ostringstream os;
os << "Manufacturer's Name: " << name << 
      ", Model Name: " << model <<
      ", Model Year: " << year <<
      ", Miles: " << miles;
std::cout << os.str();               // <-- .str() to obtain a std::string object

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接