C++和C对字符串操作总结

一 c语言的字符串
c语言中没有字符串这个数据类型,用两种方法来表示字符串,第一种是字符数组char s[],第二种是字符指针char *s, 两者有区别,不能任务是一样的,区别如下(不完整,后期再慢慢补充)
1 初始化和赋值
char[]字符串赋值c语言中可以用“=”对字符串初始化,但是不能用“=”对其赋值,否则会出现类似于如下的错误:

error: incompatible types in assignment ofconst char **’ tochar **’

如果要对c字符串赋值可以使用strcpy()函数。

char *定义的是字符串常量,不能对其修改除非使用new对其重新分配内存.但是可以对定义的指针修改,如下:

int len_c;
// char[]
char msg[11] = "hello c";
//msg = "hello c string";  //错误
strcpy(msg,  "hello string");  //正确

//char*
char *s = "hwllo"; //编译器版本高的时候此处可能会有警告,加上const即可,因为这是定义了字符串常量
s = "hello"; // 对指针重定义,允许
s[1] = "e" //对字符串常量修改,不允许

2 求c字符串的长度/strlen和sizeof的区别
函数: size_t strlen ( const char * str )
头文件: string.h
c语言字符串结尾会自动添加一个‘\0’表示字符串结束,strlen是计算从字符串开始到‘\0’的长度,结果有可能不固定。
比如char s[10], strlen(s)的结果可能不是固定的,视编译器而定,如果char s[10] = {‘\0’},strlen(s)为0

sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个取字节运算符

3 c字符串常用操作
puts() 输出
char c[] = “aa”;
puts(c);

gets() 输入
char gt[15];
gets(gt);

strcat()字符串连接函数
char a1[10] = “hello”;
char a2[10] = “c”;
strcat(a1, a2);

strcpy() 字符串复制
char a1[10];
char a2[10] = “hello c”;
strcpy(a1, a2);
a2为”hello c”

strcmp()字符串比较,按照ASCALL码的大小逐个比较两个字符数组中的各个字符,知道出现不相同的或者遇到结束符
strcmp(字符数组1,字符数组2);
相等返回0
字符数组1大于2返回正整数
字符数组1小于2返回负数

strlen()返回字符串实际长度

二 c++中string的操作
1 取子串substr(),包含头文件string、iostream
原型string substr (size_t pos = 0, size_t len = npos) const;
从源字符串中的下标为pos的地方获取长度为npos的长度,如果第二个参数为空,则代表从pos一直获取到字符串结束。
例:

std::string str="We must keep out mind in study";
std::string str2 = str.substr (3,4);  // "must"
std::string str3 = str.substr (pos);  // from "must" to the end
std::cout << str2 << ' ' << str3 << '\n';

注意它的返回值是string类型,如果要赋给char []类型需要转换。

2 拷贝
strcpy()
memcpy()

三、类型转换
1 整型数转为字符串:char *itoa(int value, char *str, int radix)
itoa为interger to array的简称,value为整型,str为转换后的字符串,radix为进制数。

2 字符串转为整型数:int atoi(const char *nptr)
nptr为要转化你的字符串,返回值是转换后的整型。

3 字符转为整数
char a = ‘9’;
int k = a - ‘0’;

4 整数转为字符
int i = 5;
char ch = i + ‘0’;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在C++中,可以使用`substr()`函数来截取字符串。该函数接受两个参数,第一个参数是起始位置,第二个参数是截取的长度。例如,以下代码截取字符串`s`的从第3个字符开始的4个字符: ```c++ std::string s = "Hello, world!"; std::string sub = s.substr(2, 4); // sub = "llo," ``` 注意,第一个字符的索引是0,因此第3个字符的索引是2。如果第二个参数缺省,则截取从起始位置到字符串结尾的所有字符。例如,以下代码截取字符串`s`的从第3个字符开始到结尾的所有字符: ```c++ std::string s = "Hello, world!"; std::string sub = s.substr(2); // sub = "llo, world!" ``` ### 回答2: C语言中可以使用库函数来截取字符串,常用的库函数有`strcpy`、`strncpy`和`strncat`。 首先是`strcpy`函数,它用于将源字符串拷贝到目标字符串中,语法如下: ```c char *strcpy(char *dest, const char *src); ``` 其中,`dest`是目标字符串,`src`是源字符串。这个函数会将源字符串中的字符拷贝到目标字符串中,直到遇到空字符`\0`为止。 接下来是`strncpy`函数,它用于将指定长度的源字符串拷贝到目标字符串中,语法如下: ```c char *strncpy(char *dest, const char *src, size_t n); ``` 其中,`dest`是目标字符串,`src`是源字符串,`n`是要拷贝的字符个数。如果源字符串的长度小于`n`,则会将剩余的部分用空字符填充。 最后是`strncat`函数,它用于将一个字符串连接到另一个字符串的末尾,语法如下: ```c char *strncat(char *dest, const char *src, size_t n); ``` 其中,`dest`是目标字符串,`src`是要连接的源字符串,`n`是要连接的字符个数。这个函数会将源字符串中的字符连接到目标字符串的末尾。 通过调用这些库函数,我们可以实现字符串的截取操作。比如,如果要截取一个字符串的前5个字符,可以使用`strncpy`函数,将前5个字符拷贝到一个新的字符串中即可。 需要注意的是,在进行字符串截取操作时,需要保证目标字符串足够大,以免发生溢出。此外,还需要在截取后的目标字符串末尾添加空字符`\0`,以保证字符串的完整性。 ### 回答3: C++中的字符串截取可以通过使用`substr()`函数来实现。`substr()`函数需要两个参数,第一个参数是起始索引位置,第二个参数是要截取的字符个数。 例如,如果我们有一个字符串`str = "Hello, World!"`,我们可以使用`substr()`函数来截取从索引位置为7的字符开始的5个字符,即`str.substr(7, 5)`。这将返回一个新的字符串"World"。 另外,如果我们只指定起始索引位置而不指定要截取的字符个数,`substr()`函数将返回从指定索引位置到字符串末尾的所有字符。例如,`str.substr(7)`将返回"World!"。 需要注意的是,C++字符串的索引位置是从0开始的。也就是说,字符串的第一个字符的索引位置是0,第二个字符的索引位置是1,依此类推。 此外,我们还可以使用字符串的[]运算符来截取单个字符。例如,`str[0]`将返回字符串中的第一个字符。 总结来说,C++中可以通过`substr()`函数和[]运算符来截取字符串。使用`substr()`函数我们可以指定起始索引和截取字符个数来得到一个新的子字符串,使用[]运算符我们可以直接获取字符串中的单个字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值