gpt4 book ai didi

c++ - 为什么表达式 strlen(cstr1) 没有计算为常量,其中 cstr1 是一个 const char 数组?

转载 作者:行者123 更新时间:2023-11-28 00:11:41 25 4
gpt4 key购买 nike

当我构建以下代码时,编译器说表达式未计算为常量。但我不知道如何修复错误。有人可以帮忙吗?

#include <iostream>
#include <cstring>

const char cstr1[] = "Hello";
const char cstr2[] = "world!";

int main()
{
constexpr size_t new_size = strlen(cstr1) + strlen(" ") + strlen(cstr2) + 1;
char cstr3[new_size];

strcpy(cstr3, cstr1);
strcat(cstr3, " ");
strcat(cstr3, cstr2);

std::cout << cstr3 << std::endl;
}

最佳答案

它不起作用,因为 strlen 没有声明 constexpr,所以它的结果不能在 constexpr 中使用。

您可以尝试使用 sizeof 来解决这个问题,但实际上您一开始就不应该使用 C 风格的字符串。 C++ 有 std::string 是有原因的:

const std::string str1 = "Hello";
const std::string str2 = "world!";

int main(){
std::string str3 = str1 + ' ' + str2;

std::cout << str3 << std::endl;
}

关于c++ - 为什么表达式 strlen(cstr1) 没有计算为常量,其中 cstr1 是一个 const char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756391/

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