0

私は頭がおかしくなり、C ++を初めて使用します。C#は、次のように単純であることがわかっています。

var cat = "cat";
dvar(0,0, "hi" +cat+ "hi");

ここでの私の問題は、ゲームを開発していて、次のように関数呼び出しに文字列を入れる必要があることです。

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

また、スレッドについては、一度に1つの関数しか呼び出せないので、気が狂いますが、whileループが一定のスクリー命令にある関数があるので、ループスレッドを渡して、ボタンを介した他の機能。

4

2 に答える 2

1

c_str()非メンバー文字列連結関数を使用するには、なしで関数を呼び出す必要があります。

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

hoststd::string型なので、+演算子はの非メンバー関数operator+を呼び出すことになりstd::stringます。

たとえば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);

これは標準ライブラリには存在しません。

于 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 に答える