【问题标题】:How do you concatenate strings and integers in C++? [duplicate]如何在 C++ 中连接字符串和整数? [复制]
【发布时间】: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++)通过在使用某些运算符时将整数隐式转换为其字符串表示来帮助您。

标签: c++ string type-conversion


【解决方案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
      猜你喜欢
      • 2022-08-06
      • 2012-12-28
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多