如何在 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 从 int
到 string
的转换:cplusplus.com/articles/D9j2Nwbp
@user1471980,它是 C++11 和 <string>
。旧版本的 GCC 也可能存在问题。
您不(或不应该)连接字符串和整数。您可以将字符串与其他字符串连接起来,其中一些字符串可能是整数的字符表示,但它们不是整数。许多语言(包括 Java 和 C++)通过在使用某些运算符时将整数隐式转换为其字符串表示来帮助您。
【参考方案1】:
在 C++03 中,正如其他人所提到的,您可以使用 ostringstream
类型,在 <sstream>
中定义:
std::ostringstream stream;
stream << "Mixed data, like this int: " << 137;
std::string result = stream.str();
在 C++11 中,您可以使用 std::to_string
函数,该函数方便地在 <string>
中声明:
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++ 中连接字符串和整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章