如何在 C++ 中连接字符串和整数? [复制]

Posted

技术标签:

【中文标题】如何在 C++ 中连接字符串和整数? [复制]【英文标题】:How do you concatenate strings and integers in C++? [duplicate] 【发布时间】:2013-10-09 13:13:40 【问题描述】:

我正在尝试按如下方式连接字符串和整数:

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

我收到此错误:

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++ 新手。

【问题讨论】:

使用 std::to_string 或 sting 流。 @chris,我试过我得到这个错误:错误:命名空间'std'中没有名为'to_string'的成员 我今天早些时候遇到了这个问题,发现根据您的编译器设置,您可能由于某种原因无法访问to_string。看看 stringstreams 从 intstring 的转换:cplusplus.com/articles/D9j2Nwbp @user1471980,它是 C++11 和 &lt;string&gt;。旧版本的 GCC 也可能存在问题。 您不(或不应该)连接字符串和整数。您可以将字符串与其他字符串连接起来,其中一些字符串可能是整数的字符表示,但它们不是整数。许多语言(包括 Java 和 C++)通过在使用某些运算符时将整数隐式转换为其字符串表示来帮助您。 【参考方案1】:

在 C++03 中,正如其他人所提到的,您可以使用 ostringstream 类型,在 &lt;sstream&gt; 中定义:

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

在 C++11 中,您可以使用 std::to_string 函数,该函数方便地在 &lt;string&gt; 中声明:

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

希望这会有所帮助!

【讨论】:

【参考方案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

【讨论】:

【参考方案3】:
std::stringstream s;
s << "Manufacturer's Name: " << name
  << ", Model Name: " << model
  << ", Model Year: " << year
  << ", Miles: " << miles;

s.str();

【讨论】:

请确保您的代码缩进四个空格,或按 CTRL+K 自动缩进。否则,它将被解释为纯文本。见formatting help

以上是关于如何在 C++ 中连接字符串和整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中连接字符串和数字?

将带有时间戳的向量整数连接为C++中的字符串?

您将如何“即时”连接文本+整数并将其传递给函数? [复制]

有没有办法在 C++ 中将字符串和整数相乘? [复制]

如何在不使用对象的情况下连接字符串、整数和浮点数?

GCC 如何连接多个 C++ std::string 变量?