gpt4 book ai didi

c++ - 为什么 C++ 中 std::string 的复制方法在此程序中显示出奇怪的行为?

转载 作者:行者123 更新时间:2023-12-05 09:32:58 24 4
gpt4 key购买 nike

#include<iostream>
using namespace std;
int main()
{
string str1 = "geeksforgeeks is for geeks";
string str2 = "geeksforgeeks is for geeks";

char ch1[100];
char ch2[100];

cout<<str1.size()<< endl << endl;
str1.copy(ch1,23,0);
str2.copy(ch2,24,0);


cout << ch1 << endl << endl;
cout << ch2 << endl << endl;



return 0;

}

字符串的长度是 26,当我试图复制超过 23 个字符时,它表现出奇怪的行为(最后打印随机字符)这是上面程序的输出

26

geeksforgeeks is for ge

geeksforgeeks is for gee£qí╜∙⌂

最佳答案

这是因为您没有设置任何'\0'(空)字符来确定结束。这就是它拾取垃圾值(value)的原因。

你可以做到

#include<iostream>
using namespace std;
int main()
{
string str1 = "geeksforgeeks is for geeks";
string str2 = "geeksforgeeks is for geeks";

char ch1[100];
char ch2[100];

cout<<str1.size()<< endl << endl;
str1.copy(ch1,23,0);
str2.copy(ch2,24,0);

ch1[23] = '\0';
ch2[24] = '\0';

cout << ch1 << endl << endl;
cout << ch2 << endl << endl;



return 0;

}

关于c++ - 为什么 C++ 中 std::string 的复制方法在此程序中显示出奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67615709/

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