我有以下示例,取自此处:
// strings and c-strings
#include <iostream>
#include <cstring>
#include <string>
int main ()
{
std::string str ("Please split this sentence into tokens");
char * cstr = new char [str.length()+1];
std::strcpy (cstr, str.c_str());
// cstr now contains a c-string copy of str
char * p = std::strtok (cstr," ");
while (p!=0)
{
std::cout << p << '\n';
p = strtok(NULL," ");
}
delete[] cstr;
return 0;
}
据我了解str
是一个字符串,str.c_str()
是一个指针,指向一个数组的第一个元素,其中包含的字符str
作为其元素。然后使用std::strcpy
我们将给定地址的值作为它的第二个参数,并将这个值分配给作为第一个参数 ( cstr
) 给出的指针。
但是,我有以下示例,取自此处:
#include <iostream>
#include <cstring>
int main()
{
char *str = new char[100];
std::strcpy(str, "I am string!");
std::cout << str;
delete[] str;
}
现在作为第二个参数,我们有一个字符串(而不是第一个示例中的指向数组的指针)。
有人可以澄清这种不一致吗?