C与C++风格字符串
来源:互联网 发布:怎么看我的淘宝店铺 编辑:程序博客网 时间:2024/05/17 07:47
C风格字符串:对字符串进行操作的 C 函数定义在头文件<cstring>中;
1. 字符串定义:char* result;
2. 字符串的最后一个字符是null字符('/0'),可以通过这个字符确定字符串的结尾。
3. strlen()返回的是字符串的大小;因此,分配空间的时候,需要比字符串的实际空间大1.
e.g. char* copyString(const char* inString)
{
char *result = new char[strlen(inString)];//BUG! off by one
strcpy(result, inString);
return result;
}
explain: strlen()返回的是字符串的大小,比如"ab",返回的是2。而在new进行分配的时候,需要为'/0'分配一个空间。分配语句要写作,char *result = new char[strlen(inString) + 1];
4. strcpy(a,b):将字符串b的内容赋值给字符串a;a的大小可以大于b,将b放在a的开始的位置;
strcat(a,b):将字符串b拼接到字符串a的现有字符后面;
C++风格字符串:使用C++风格字符串的时候,要将它当做是一个普通的类型,如int,这样反而会避免将string作为一个类来理解所带来的很多问题。
1. 支持<cstring>中许多函数完成的同样操作。
2. 字符串定义:string myString = “hello”;
3. 操作符 = :复制字符串;比如,string newone = original;会将后者复制给前者,不会出现两个变量同样指向一个内存的情况。
4. 可以像int一样使用 == 之类的操作符
5. 可以改变字符串中的某一个字符。 如 string myString = "hello"; mystring[0] = 'l'; 这中操作是允许的。
字符串直接量:字符串没有变量名字,自身表示自身。
1. string literal:字符串直接量: e.g. cout<<"hello"<<endl; 代码中通过包含"hello"字符串自身来将其输出,并未包含该字符串的变量。
2. 字符串直接量可以赋值给变量,但是与字符串直接量相关联的内存空间位于只读部分,因此它是常量字符数组。
char* ptr = "hello";
ptr[1] = 'a';//crash! attemps to write to read-only memory.
因此,当引用字符串直接量的时候使用指向const的字符数组:
const char* ptr = "hello";
ptr[1] = 'a';//bug! attempts to write to read-only memory.
3. 当将字符串直接量赋值给字符数组的初始值的时候。由于字符数组存放与栈中,不允许引用其他地方的内存,因此编译器会将字符串直接量复制到站的数组内存中。因此,可以进行相应的修改。
char stackArray[] = "hello";
stackArray[1] = 'a';
- C风格字符串与c++风格字符串
- C与C++风格字符串
- C与C++风格字符串
- c风格字符串与c风格字符串数组
- c风格字符串与c++string比较
- C风格字符串[C++]
- c风格字符串与c++风格字符串之间转换
- C风格字符串 与 & 操作符
- (九十五)函数与C-风格字符串
- C++ C 风格字符串与string类
- c风格字符串
- C风格字符串
- C/C++风格字符串
- C风格的字符串
- c风格字符串
- c风格的字符串
- C风格字符串
- C风格字符串
- java---鼠标画线
- C++中的IOStream输入输出控制符
- 计算机主机网关的作用是什么?
- 利用程序代码删除文件
- [双语阅读]英皇家学会网上公开牛顿等名人手稿
- C与C++风格字符串
- “公务员考试”怎么说?
- 外貌主义 lookism
- C++中读入一行字符
- C# 在C#中使用SendMessage[转]
- developerWorks
- C# SendMessage备忘[转]
- 命令大全
- 请教:电子商务专业学生选择问题!