如何返回包含string/int变量的字符串
How to return string that contains string/int variables
例如,如果我有这个小函数:
string lw(int a, int b) {
return "lw $" + a + "0($" + b + ")n";
}
…在main函数中调用lw(1,2)
,我希望它返回"lw $1, 0($2)"
。
但我一直得到一个错误:invalid operands of types ‘const char*’ and ‘const char [11]’ to binary ‘operator+’
我做错了什么?我基本上是从class中复制了一个示例,并将其更改为适合我的功能。
您正在尝试将整数连接到字符串,而c++无法转换这种不同类型的值。最好的选择是使用std::ostringstream
来构造结果字符串:
#include <sstream>
// ...
string lw(int a, int b)
{
ostringstream os;
os << "lw $" << a << "0($" << b << ")n";
return os.str();
}
如果你有Boost,你可以使用Boost。Lexical_cast:
#include <boost/lexical_cast.hpp>
// ...
string lw(int a, int b)
{
return
string("lw $") +
boost::lexical_cast<std::string>(a) +
string("0($") +
boost::lexical_cast<std::string>(b) +
string(")n");
}
现在c++ 11和更高版本有std::to_string
:
string lw(int a, int b)
{
return
string("lw $") +
std::to_string(a) +
string("0($") +
std::to_string(b) +
string(")n");
}
#include <sstream>
string lw(int a, int b) {
std::string s;
std::stringstream out;
out << "lw $" << a << "0($" << b << ")" << endl;
s = out.str();
return s;
}
使用ostringstream:
#include <sstream>
...
string lw(int a, int b) {
std::ostringstream o;
o << "lw $" << a << "0($" << b << ")n";
return o.str();
}
不能将字符串字面值(如"hello")添加到整数中。这就是编译器告诉你的。这是对你问题的部分回答。请参阅如何在其他帖子中完成您想要的内容。
要理解这个问题,您必须知道在c++中,像"lw $"
这样的字符串字量被视为继承自C语言的const char[]
。然而,这意味着您只能获得为数组定义的操作符,或者在这种情况下,数组降级为指针。
你有一个字符串字面值,然后给它加一个整数,创建一个新的指针。然后您尝试添加另一个字符串字面值,再次降级为char*
。你不能把两个指针加在一起,否则会产生你现在看到的错误。
您正在尝试将整数格式化为带有一些分隔文本的字符串格式。在c++中,规范的方法是使用stringstreams:
#include <sstream>
string lw(int a, int b)
{
std::ostringstream os;
os << "lw $" << a << "0($" << b << ")n";
return os.str();
}
相关文章:
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 如何检查 int 变量是否包含合法(非陷阱表示)值?
- 将子字符串字符从字符串值转换为 int,然后将其分配给 int 变量
- 如何在传递给 C/C++ 宏之前解析 int 变量?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- 如何将整数值解析为逗号分隔字符串中的单独 int 变量?
- 为什么我的 std::atomic<int> 变量不是线程安全的?
- std::out_of_range 在静态 int 变量上
- 如何转换 int 变量并附加到常量 wchar_t*
- 如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?
- 如何将字符串分配给INT变量
- QT连接:使用lambda表达式重置通过了int变量(怪异)
- 如何将私有整数从A类传递到C 类B类的另一个INT变量
- C :用sizeof()operator在for for loop中增加一个int变量,只能工作一次
- 如何使用主函数和来自 getData 函数的用户输入将值初始化为 int 变量 im
- lambda捕获的const int变量的值类别
- 当用户输入int变量的字符串时,输出
- 将字符放入 int 变量中以停止循环
- 根据C++标准,int 变量是对象吗?
- C++为什么字符串的地址尽管是十六进制格式,但不能存储在 long int 变量中?