【问题标题】:Having trouble with adding strings... (c++)添加字符串时遇到问题...(c ++)
【发布时间】:2013-01-15 02:53:11
【问题描述】:

由于我的 toString 函数,我的源文件无法编译。它声称它无法识别 + 符号来附加字符串。这是我的代码:

string s = "{symbol = " + symbol + ", qty = " + qty + ", price = " + price + "}";

symbol、qty 和 price 是类中的变量

我从编译器收到以下消息...

CLEAN SUCCESSFUL (total time: 55ms)

mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/Stock.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/Stock.o.d -o build/Debug/GNU-MacOSX/Stock.o Stock.cpp
Stock.cpp: In member function 'std::string Stock::toString()':
Stock.cpp:56: error: no match for 'operator+' in 'std::operator+(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((const char*)", qty = ")) + ((Stock*)this)->Stock::qty'
make: *** [build/Debug/GNU-MacOSX/Stock.o] Error 1


BUILD FAILED (exit value 2, total time: 261ms)

有人知道这里发生了什么吗?

【问题讨论】:

  • symbolqtyprice的类型有哪些?
  • 符号 - 字符串 |数量 - 整数 |价格 - 双倍
  • 你做了include &lt;string&gt;我猜?
  • 是的,我确实包括了

标签: c++ string operators


【解决方案1】:

您不能在 int 类型上调用 std::string::operator+,请使用 std::stringstream

#include <sstream>
#include <string>

std::stringstream ss;
ss << "{symbol = " << symbol << ", qty = " << qty << ", price = " << price << "}";

std::string s = ss.str();

如果您使用 C++11 和 boost::lexical_cast 将整数类型转换为字符串,请使用 std::to_string

std::string s = "{symbol = " + symbol + ", qty = " + std::to_string(qty) 
                + ", price = " + std::to_string(price) + "}";

【讨论】:

  • 如果流失败,请确保添加一些错误检查。
  • 我使用了上述两种方法中的第一种,它似乎有效。谢谢!
【解决方案2】:

如果 qtyprice 是整数或类似的东西,您可以执行以下操作(在 C++11 中):

string s = "{symbol = " + symbol + ", qty = " + std::to_string(qty) + ", price = " + std::to_string(price) + "}";

example

【讨论】:

  • 他似乎在 OSX 上,因此 C++11 支持远未得到保证
  • 取决于 OS X 的版本和使用的编译器在 OS X 上的 C++11 支持非常好。它带有 libc++,一个基本完整的 C++11 库,甚至包括 vs2012 库中缺少的东西,并且最新版本的 clang 具有几乎完整的 C++11 语言支持;我知道它缺少的唯一功能是其他人拥有的继承构造函数(仅在 GCC 4.8 中实现)。
猜你喜欢
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2014-12-05
  • 1970-01-01
  • 2017-02-09
相关资源
最近更新 更多