PLC
直播中

恩可口

8年用户 768经验值
私信 关注

string类型数据与《string.h》头文件的区别在哪里?

string的含义是什么?

string与vector容器的区别在哪?
c中的字符串是什么?
string类型数据与《string.h》头文件的区别在哪里?

回帖(1)

张晶

2021-7-5 10:06:53
  概念区分
  在c中,是没有string类型的数据的。但是c语言里有《string.h》这个头文件。容易让人误认为c中有string类型的数据。
  区分string的含义:
  1)(在c和c++中)如果string表示字符串型数据,那么c中是有字符串类型数据的(用char[]或者char *来声明定义)。但是没有string类型数据。而c中的《string.h》这个头文件里声明的函数原型也全是针对char数组的种种操作,如strcmp,strcpy,strcat等。
  2)(在c++中)如果string表示string类型,那么c++中才有,c中没有。string在c++中是一种特殊的类。string 和 vector、list一样,都是标准库类型。 string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。
  需要:
  #include 《string》using std::string; c++中string类,示例:
  [cpp] view plain copy print ?
  #include《iostream》
  #include《string》
  using std::string;
  using namespace std;
  int main(){
  string s = “abcdefg”;
  string::iterator i;//支持迭代器
  for(i=s.begin();i!=s.end();i++)
  cout《《*i《《“ ”;//逐个输出string s中的元素
  system(“pause”);
  return 0;
  }
  与vector容器区别,例:
  [cpp] view plain copy print ?
  #include《iostream》
  #include《vector》
  using namespace std;
  int main()
  {
  vector《string》 s(5,“abcdefg”);
  vector《string 》::iterator i;
  for(i=s.begin();i!=s.end();i++)
  cout《《*i《《“ ”;//逐个输出vector s中的元素
  system(“pause”);
  return 0;
  }
  c中的字符串
  错误示例: int main(int argc, char* argv[])
  {
  char *n;
  n=new char[20];
  ;
  printf(“%sn”,n);
  return 0;
  }
  上述代码有误,指出其中三个错误:
  第一,C语言里没有new。
  C中是这样的:
  char * n;
  n = (char *)malloc(sizeof(char) * 20);
  第二,分配的空间在栈中,不能给它直接等堆里的常量。
  n = “Hello, World!”; // 错
  应该是 strcpy(n, “Hello, World!”);
  第三,C/C++中分配了空间要释放。
  C++中new了就要delete,其中 new [] 和 delete []配对,new 和 delete 配对。
  C中用malloc分配的内存对应的是 free。
  所以上述代码中需要要 free (n)。
  静态内存分配示例:
  [cpp] view plain copy print ?
  #include《iostream》
  using namespace std;
  int main()
  {
  char *p;
  p=“hello”;
  cout《《p《《endl;
  system(“pause”);
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分