0

我正在失去理智和 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 循环,所以它忙于处理那个循环线程让我激活任何其他功能通过按钮。

4

2 回答 2

1

您应该在没有 的情况下调用该函数c_str(),以便使用非成员字符串连接函数。

dvar(0,0, ("s \"test" + host + "connection\"").c_str());

由于host是一种std::string类型,因此运算+符将导致为 调用非成员函数operator+std::string

例如host + "connection"将导致调用以下函数,其中"connection"隐式转换为 a std::string

std::string operator+(const std::string& lhs, std::string&& rhs);

但是,如果您愿意host.c_str() + "connection",编译器将寻找如下所示的函数:

??? operator+(const char* lhs, const char* rhs);

标准库中不存在。

于 2012-09-14T10:26:19.880 回答
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);
于 2012-09-14T10:17:44.780 回答