C++ 即使在将新字符串复制到现有字符串之后,也可以使用Old contained(在某些索引中)
我了解到strcpy的工作是将一个字符串的内容复制到另一个字符串中。到目前为止,我一直在想,当我们使用strcpy时,旧的内容会被完全删除,新的内容会被复制。请看以下节目:C++ 即使在将新字符串复制到现有字符串之后,也可以使用Old contained(在某些索引中),c++,string,strcpy,C++,String,Strcpy,我了解到strcpy的工作是将一个字符串的内容复制到另一个字符串中。到目前为止,我一直在想,当我们使用strcpy时,旧的内容会被完全删除,新的内容会被复制。请看以下节目: #include<iostream> #include<string.h> using namespace std; int main() { char str[]="abcdef"; strcpy(str,"xyz"); cout<<str[4]; cout<<
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[]="abcdef";
strcpy(str,"xyz");
cout<<str[4];
cout<<str;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
char str[]=“abcdef”;
strcpy(str,“xyz”);
cout'd'
被空终止符覆盖,因此str[3]
只是一个零。str[4]
然后包含'e'
strcpy()
只修改它需要的字符数,它不知道str
有多长,所以它无法将其余字符归零
如果要真正将数组归零,请在其上使用memset()
。“xyz”在它的末尾有一个\0,这就是为什么你看不到d而看到e。这也是为什么你应该使用std::string而不是C-strings。先生,但是当我们在做cout@Singh:cout@MSalters谢谢你,先生。strcpy之后,数组str
包含{x',y',z',0',e',f',0}
。请注意,零是空终止符。正如其他人所指出的,打印在第一个空终止符处停止。