将char转换为字符串的代码行 - > foob​​ar的(字符串( “文本”)+ anotherString)

时间:2012-02-21 22:04:55

标签: c++

我有一行代码似乎将char数组转换为字符串

foobar(string("text")+anotherString);

foobar期望std :: string作为参数

我从未见过以这种方式完成转换......在“文本”上调用了什么函数。或者它是一种棘手的铸造方式?

2 个答案:

答案 0 :(得分:4)

std::string有一个构造函数,它接受一个char数组*(假定以null结尾),我相信你以前见过:

std::string s1 = "hello world";
std::string s2("also hello world");  // "same thing", essentially

所以std::string("test")只创建一个值为"test"的临时字符串对象。

此外,operator+string有一个免费const char *,它将char数组中的数据(再次假定以null结尾)附加到字符串。

等效地,您可以写std::string("test").append(anotherString),但效果相同(即包含两个字符串的临时连接)。

有关std::string支持的操作列表,请咨询任何体面的manual

*)或​​更确切地说,“指向字符数组的第一个元素的指针”

答案 1 :(得分:1)

string("text")通过调用其构造函数并将其传递给"text"来创建临时对象字符串。 +anotherString部分调用临时创建的“operator +”成员函数,它也返回一个字符串对象。 最后,调用foobar并传递后一个字符串对象。

与以下内容完全相同:

string temp("text");
temp += anotherString;
foobar(temp);

如果这有帮助