我失去理智,不熟悉C ++我知道C#,我知道它就像
一样简单var cat = "cat";
dvar(0,0, "hi" +cat+ "hi");
我的问题是我正在开发一个游戏,需要将一个字符串放入函数调用中,如下所示:
string host = "HIST";
dvar(0,0, "s \"test" + host.c_str() + "connection\"");
关于线程我也很疯狂,因为我的游戏我一次只能调用一个函数,但是我有一个函数是在scree指令上有一个常量while循环所以它是忙于为我循环处理该循环线程通过按钮激活任何其他功能。
答案 0 :(得分:1)
您应该在没有c_str()
的情况下调用该函数,以便使用非成员字符串连接函数。
dvar(0,0, ("s \"test" + host + "connection\"").c_str());
由于host
是std::string
类型,+
运算符将导致为operator+
调用非成员函数std::string
。
E.g。 host + "connection"
将导致调用以下函数,其中"connection"
被隐式转换为std::string
:
std::string operator+(const std::string& lhs, std::string&& rhs);
但是,如果你做host.c_str() + "connection"
,编译器会寻找一个看起来像这样的函数:
??? operator+(const char* lhs, const char* rhs);
标准库中不存在。
答案 1 :(得分:0)
表达式:
"s \"test" + host.c_str() + "connection\"
将尝试添加指向char
的指针。这不行。你可能是
寻找一个字符串类?
std::string host = "bar";
// this is quite inefficient
func("foo" + host + "baz");
// this is somewhat better
std::string x = "foo";
x.append(host);
x.append("baz");
func(x);