gpt4 book ai didi

c++ - std::string 添加到 char*

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:15 25 4
gpt4 key购买 nike

我试图了解将 std::string 添加到 char* 是如何工作的。此代码按预期编译和工作:

#include <string>
#include <cstdio>

void func (const char* str) {
printf("%s\n", str);
}

int main () {
char arr[] = {'a','b','c',0};
char *str = arr;
func((str + std::string("xyz")).c_str()); // THIS LINE
return 0;
}

但我不明白构造函数/方法在调用什么,以及它以什么顺序工作。这是 std::string 到 char* 的加法,它给出了另一个 std::string,但 char* 不是一个类,它没有加法运算符。

最佳答案

您正在为左侧的 const char* 使用 operator + 并在右侧使用临时的 std::string .这是重载 #4 here :

template< class CharT, class Traits, class Alloc >
basic_string<CharT,Traits,Alloc>
operator+( const CharT* lhs,
const basic_string<CharT,Traits,Alloc>& rhs );

Return value

A string containing characters from lhs followed by the characters from rhs

使用std::stringchar,上述模板签名可以“解释”为

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

结果是一个新的临时 std::string 对象,它拥有连接的新缓冲区 "abcxyz"。它可以绑定(bind)到 const char* 类型的函数参数,并且只要函数体执行就有效。

关于c++ - std::string 添加到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com