我有一行代码似乎将char数组转换为字符串
foobar(string("text")+anotherString);
foobar期望std :: string作为参数
我从未见过以这种方式完成转换......在“文本”上调用了什么函数。或者它是一种棘手的铸造方式?
答案 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);
如果这有帮助