• C++笔记(3)——string.h相关的一些小知识


    strlen()

    用于得到字符数组中第一个前的字符的个数,格式如下:

    strlen(数组);
    

    例子:

    #include <stdio.h>
    #include <string.h>
    
    int main(){
    	char str[10];
    	gets(str);
    	int len = strlen(str);
    	printf("%d
    ", len);
    	return 0;
    } 
    

    输入:

    ababab
    

    输出:

    6
    

    strcmp()

    用于比较字符串大小,比较原则是按照字典序:

    strcmp(字符数组1, 字符数组2)
    

    如果数组1长则返回正数,数组2长则返回负数,相等返回0。

    #include <stdio.h>
    #include <string.h> 
    
    int main(){
    	char str1[50], str2[50];
    	gets(str1);
    	gets(str2);
    	int cmp = strcmp(str1, str2);
    	if(cmp < 0) printf("str1 < str2
    ");
    	else if (cmp > 0) printf("str1 > str2
    ");
    	else printf("str1 == str2
    ");
    	return 0;
    }
    

    上图中前两行是输入,最后一行是输出。

    strcpy()

    复制字符串给另一个字符串,用法:strcpy(str1, str2)。这样会把str2内容复制到str1

    示例:

    #include <stdio.h>
    #include <string.h> 
    
    int main(){
    	char str1[50], str2[50];
    	gets(str1);
    	gets(str2);
    	strcpy(str1, str2);
    	puts(str1);
    	return 0;
    }
    

    strcat()

    拼接两个字符串,strcat(str1, str2)

    #include <stdio.h>
    #include <string.h>
    
    int main(){
    	char str1[50], str2[50];
    	gets(str1);
    	gets(str2);
    	strcat(str1, str2);
    	puts(str1);
    	return 0;
    }
    

    sscanf与sprintf

    sscanfsprintf是专门用于处理字符串的,可以理解为“string + scanf”和“string + printf”。

    用法就类似于在内存上以scanfprintf的方式将数据进行传递。举个例子,sscanf(str, "%d", &n);,这就是将str中内容以%d的格式写入到n中(可以这样理解,scanf(screen, "%d", &n);相当于是从screen屏幕捕获输入并输入到n中,从左到右,而sscanf起到的作用就差不多这样,从str按照"%d"的格式输入到n。sprintf则反过来,从右往左)。

    比较简单,直接上示例:

    #include <stdio.h>
    
    int main() {
    	int n;
    	char str[100] = "123";
    	sscanf(str, "%d", &n);
    	printf("%d
    ", n);
    	return 0;
    } 
    

    #include <stdio.h>
    
    int main(){
    	int n = 233;
    	char str[100];
    	sprintf(str, "%d", n);
    	printf("%s
    ", str);
    	return 0;
    }
    

    复杂点的例子:

    #include <stdio.h>
    
    int main(){
    	int n;
    	double db;
    	char str[100] = "2048:3.14, hello", str2[100];
    	sscanf(str, "%d:%lf, %s", &n, &db, str2);
    	printf("n = %d, db = %.2f, str2 = %s
    ", n, db, str2);
    	return 0;
    }
    

    在字符串处理的时候相当有用。

    本博客文章默认使用CC BY-SA 3.0协议。
  • 相关阅读:
    Qt通用方法及类库9
    设计模式原则(7)--Composition&AggregationPrinciple(CARP)--合成&聚合复用原则
    设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
    鼠标悬停出现页面
    设计模式(23)--Visitor--访问者模式--行为型
    设计模式(22)--Template Method(模板方法模式)--行为型
    设计模式(21)--Strategy(策略模式)--行为型
    设计模式(20)--State(状态模式)--行为型
    设计模式(19)--Observer(观察者模式)--行为型
    设计模式(18)--Memento(备忘录模式)--行为型
  • 原文地址:https://www.cnblogs.com/yejianying/p/cpp_notes_3.html
Copyright © 2020-2023  润新知