#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;
}
https://stackoverflow.com/questions/67615709/