gpt4 book ai didi

c++ - const char* 类型变量的应对内容导致意外结果

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

const char* mTest1; /*This variable has been assigned value before and 
the print out indicates it is correct.*/
char* mTest2;

if(mTest1 != NULL){
mTest2 = new char[strlen(mTest1) +1]{};
std::copy(mTest1, mTest1 + strlen(mTest1), mTest2);
printf("\n===== mTest1 is: %s =============", mTest1);
printf("\n===== mTest2 is: %s =============", mTest2);
}

我希望这两个 printf 应该打印出相同的结果。

但是,结果不正确。

===== mTest1 is: c52b =============
===== mTest2 is: c52bZZZZ@m�� =============

我在将内容复制到 mTest2 时是否采取了任何错误的方法?

谢谢

最佳答案

我不是c++方面的专家,但是从这一行开始

std::copy(mTest1, mTest1 + strlen(mTest1), mTest2);

您似乎缺少在 mTest2 中复制空终止符。也许你可以试试

 std::copy(mTest1, mTest1 + strlen(mTest1) + 1 , mTest2);

或者,您可以在复制字符串后手动添加,使用

mTest2[strlen(mTest1)] = '\0';

关于c++ - const char* 类型变量的应对内容导致意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632364/

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