精华内容
下载资源
问答
  • C++字符串函数

    2021-01-17 23:17:27
    字符串函数是什么呢? 咱先看百度百科怎么说, 长什么样? strcpy、strlen、strcmp… 格式呢? 注意事项: 1.strlen()获取字符串的长度,在字符串长度中是不包括‘\0’且汉字和字母的长度是不一样的。 #include #...

    我们知道字符串的意思是什么,也知道函数的意思是什么。

    字符串函数是什么呢?

    咱先看百度百科怎么说,
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210117232511732.png
    长什么样?

    strcpy、strlen、strcmp…

    格式呢?

    图片来源:幕课网

    注意事项:
    1.strlen()获取字符串的长度,在字符串长度中是不包括‘\0’且汉字字母的长度是不一样的。

    #include <stdio.h>
    #include<string.h>
    int main(){
    	char str1[]="你可以的";
    	char str2[]={'a','b','c','\0'};
    	printf("str1[]='你可以的'字符串长度为%d\n",strlen(str1));
    	printf("str2[]='a','b','c'的字符串长度为%d\n",strlen(str2));
        return 0;}
    

    输出结果:
    在这里插入图片描述

    2.strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小。

    #include <stdio.h>
    #include<string.h>
    int main(){
    	char str1[]="x";
    	char str2[]="y";
    	char str3[]="x";
    	printf("x的ASCII码是%d\n",'x');
    	printf("y的ASCII码是%d\n",'y');
    	printf("z的ASCII码是%d\n",'x');
    	printf("x与y比较结果为%d\n",strcmp(str1,str2));
    	printf("y与z比较结果为%d\n",strcmp(str2,str1));
        printf("x与z比较结果为%d\n",strcmp(str3,str1));
        return 0;}
    
    

    在这里插入图片描述
    3.strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝

    在这里插入图片描述
    4.strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串

    在这里插入图片描述

    展开全文
  • c/c++字符串函数是什么类型发布时间:2020-09-22 11:47:01来源:亿速云阅读:96作者:小新这篇文章主要介绍c/c++字符串函数是什么类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!...

    c/c++字符串函数是什么类型

    发布时间:2020-09-22 11:47:01

    来源:亿速云

    阅读:96

    作者:小新

    这篇文章主要介绍c/c++字符串函数是什么类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

    1. C 风格字符串

    C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来操纵它 。

    标准 C 库为操纵 C 风格的字符串提供了一组函数,例如:

    int strlen( const char* ); // 返回字符串的长度

    int strcmp( const char*, const char* ); // 比较两个字符串是否相等

    char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

    标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include

    1.1 不调用库函数,实现C风格字符串的常用基本函数#include

    #include

    #include

    using namespace std;

    /*返回字符串长度*/

    int MyStrlen(const char * ch)

    {

    assert(ch!=NULL);

    int i=0,count=0;

    const char *t=ch;//用一个临时指针去遍历,防止改变原来指针指向。

    while(t[i]!='\0')

    {

    count++;

    i++;

    }

    return count;

    }

    /*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/

    char* MyStrcpy(char *des,const char *src)

    {

    assert((des!=NULL)&&(src!=NULL));

    int i=0;

    char *add=des;//用add记录des的首部。

    while(src[i]!='\0')

    {

    des[i]=src[i];

    i++;

    }

    des[i]='\0';

    return add;

    }

    /*

    比较两个字符串是否相等。

    相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。

    */

    int MyStrcmp(const char *ch2,const char *ch3)

    {

    assert((ch2!=NULL)&&(ch3!=NULL));

    int i=0;

    const char *str1=ch2;//定义两个临时指针。

    const char *str2=ch3;

    while((str1[i]!='\0')||(str2[i]!='\0'))

    {

    if(str1[i]

    {

    return -1;

    }

    else if(str1[i]>str2[i])

    {

    return 1;

    }

    else

    {

    i++;

    }

    }

    return 0;

    }

    int main()

    {

    char ch[]="cavely";

    char ch3[]="julia";

    cout<

    cout<

    /*

    下面这两句不能写成:

    char ch4[100];

    ch4=MyStrcpy(ch,ch3);//数组名是一个地址【常量】。不能被赋值

    */

    char *ch4;

    ch4=MyStrcpy(ch,ch3);

    cout<

    return 0;

    }

    2.string 类类型

    要使用 string 类型 必须先包含相关的头文件#include

    string str("hello");       //①定义一个带初值的字符串

    string str2;                 // ②定义空字符串

    string str3( str );        //③用一个 string 对象来初始化另一个 string 对象

    2.1 对字符串类的基本操作:

    (1)str的长度由 size()操作返回(不包含终止空字符),例如str.size()的值为5。

    (2)使用 empty()操作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

    (3)还可以直接使用赋值操作符 = 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

    (4)可以使用加操作符 +或看起来有点怪异的复合赋值操作符 += 将两个或多个字符串连接起来。例如,给出两个字符串

    string s1( "hello, " );

    string s2( "world\n" );

    我们可以按如下方式将两个字符串连接起来形成第三个字符串

    string s3 = s1 + s2;

    如果希望直接将 s2 附加在 s1 后面 那么可使用 += 操作符

    s1 += s2;

    (5)string 类型支持通过下标操作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。string str( "fa.disney.com" );

    int size = str.size();

    for ( int ix = 0; ix < size; ++ix )

    if ( str[ ix ] == '.' )

    str[ ix ] = '_';

    上面代码段的实现可用如下语句替代:replace( str.begin(), str.end(), '.', '_' );

    replace()是泛型算法中的一个,begin()和 end()操作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

    2.2 C 风格的字符串与 string 对象的转换

    string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

    string s1;

    const char *pc = "a character array";

    s1 = pc; //OK

    但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

    char *str = s1; // 编译时刻类型错误

    为实现这种转换,必须显式地调用名为 c_str()的操作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

    所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

    以上是c/c++字符串函数是什么类型的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

    展开全文
  • 有关字符串截取函数的用法老不清晰。却总会时不时用到。例如蓝桥杯的一个大题想着用字符串截取函数substr()函数跑暴力匹配。结果却用错了… 简单记录下substr()函数的参数表示 #include<string> #include<...

    有关字符串截取函数的用法老不清晰。却总会时不时用到。例如蓝桥杯的一个大题想着用字符串截取函数substr()函数跑暴力匹配。结果却用错了…

    简单记录下substr()函数的参数表示

    #include<string>
    #include<iostream>
    using namespace std;
    int main()
    {
      string s("12345asdf");
      string a = s.substr(0,5);     //获得字符串s中从第0位开始的长度为5的字符串
      cout << a << endl;
    }
    

    第一个参数表示的pos,从哪个位置开始,第二个参数表示的是长度,要截取多长的字符串。

    形式:s.substr(pos, n)

    解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

    充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

    我们来简单看一个例题:

    题目 1686: 算法4-1,4-3:定位子串

    题意:就是多组输入,每次输进去两个字符串,然后问第二个串s2,在第一个串s1中第一次出现的位置。没有就输出“0”;

    思路:我们遍历母串s1,用字符串截取函数,每次截取s2.size()的长度。然后进行匹配,看是否相等,相等就直接输出值,随后break掉。

    code:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main(){
        string s1,s2;
    	while(cin>>s1>>s2){
    	int l1 = s1.size();
    	int l2 = s2.size();
    	bool flag = 0;
        for(int i=0;i<l1-l2+1;i++){
        	string s3 = s1.substr(i,l2);
        	if(s3 == s2){
        	flag = 1;
        	cout<<i+1<<endl;
    		}
    	}
    	if(!flag) cout<<"0"<<endl;	
    	}
    	return 0;
    } 
    
    展开全文
  • c++读取字符串和字符的6种函数

    千次阅读 2021-08-30 21:19:12
    字符串或字符的输入有好多个函数,scanf、getline()、cin.getline()、cin.get()、gets()、getchar()等 如果输入是不带空格的字符串,那用什么都可以了,建议用scanf或cin 如果输入带空格,那scanf、cin就用不了了,...

    综述:

    字符串或字符的输入有好多个函数,scanf、getline()、cin.getline()、cin.get()、gets()、getchar()等

    • 如果输入是不带空格的字符串,那用什么都可以了,建议用scanf或cin
    • 如果输入带空格,那scanf、cin就用不了了,可以考虑以下方法:
      • 如果想用string类型的话,就用getline(cin, s)
      • 如果想用字符数组类型的话,可以用**cin.getline()、cin.get()、gets(),**这里不是特别建议用gets(),因为这个函数可能会出点奇怪的问题,也不建议用cin.get(), 因为这个函数既不能忽略缓冲区的换行符,还不能在输入后抹掉自己的结束符,建议使用cin.getline()
    • 如果输入的时候是单个字符,或者只想要字符串的第一个字符,就可以用getchar()、cin.get()

    cin和cin.get都会将结束符或换行符留在缓冲区,而除cin外的函数都不能忽略缓冲区的结束符,所以如果用了cin,再用他们的时候记得加上getchar

    scanf

    scanf用于字符串数组,遇到空格或换行就停止

    char str[10];
    scanf("%s", str);
    cout<<str<<endl;
    

    getline()

    可以接受空格,读取时遇到换行符结束

    有两种读取方法,法一是string流,法二是iostream流,是两个不一样的函数

    方法一:

    使用string

    string str;
    getline(cin, str);
    cout<<str<<endl;
    

    方法二:

    使用字符串数组

    char str[100];
    cin.getline(str, 20, '\n')
    //cin.getline()里面三个参数,第一个是要储存的字符串数组,第二个是最大长度 + 1,最后一个位置用来存储'\0',也就是说你填20,但是只能存前19个字符,第三个是结束符,可省略,默认是换行符
    

    注意⚠️

    程序的输入都建有一个缓冲区,每次输入的过程,其实是计算机先将输入的数据存在输入缓冲区中,而我们使用的输入函数是直接从缓冲区中读取数据。使用cin的时候,遇到空格和换行符和tab键就会停止,此时缓冲区就会有残留数据:空格、换行符、tab。cin和cin.get()从缓冲区读入的时候会自动忽略第一个空格、换行符、tab,就可以正常读入字符串,但有些函数并不能,比如 getline,gets,get, 他们就会直接读取缓冲区剩余的空格、换行符、tab,就导致需要输入的输不进去。

    所以如果你使用getline()或gets()或者cin.get()之前用了cin或cin.get(),请务必在cin后面加个getchar();

    //法一
    string s, ss;
    cin>>s;
    getchar();
    getline(cin, ss);
    cout<<ss<<endl;
    
    //法二
    string s;
    char ss[20];
    cin>>s;
    getchar();
    cin.getline(ss, 20);
    cout<<ss;
    

    get()

    读取字符串时用法同getline()的第二种用法

    与getline()的区别是cin.get()会将结束符或换行符残留在输入缓冲区中,而getline不会,所以使用get后如果还要用除cin外的输入函数,就得加一个getchar()

    char s[100];
    cin.get(s, 10);
    

    读取字符时

    char c;
    c = cin.get();
    

    还可以和getchar一样读走缓冲区中不要的字符

    cin.get();
    

    gets()

    字符串数组

    char s[10];
    gets(s);
    

    gets和getline一样,不会将结束符或换行符留在缓冲区,不过如果缓冲区有结束符或换行符,他也会读进去,所以在前面要加个getchar()

    char s[10];
    gets(s);
    cout<<s<<endl;
    

    也可以用于二维字符数组

    char s[3][10];
        for(int i = 0; i < 3; ++i){
            gets(s[i]);
        }
        for(int i = 0; i < 3; ++i){
            cout<<s[i]<<endl;
        }
    

    getchar()

    getchar()会从缓冲区读走一个字符,如果输入多个字符,也只会读取第一个

    char x = getchar();
    
    展开全文
  • C/C++字符串查找函数

    2021-05-12 15:16:24
    C/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr 在指定内存里定位给定字符strchr 在指定字符串里定位给定字符strcspn 返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量...
  • c++字符串操作函数

    2021-03-11 10:20:57
    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。...
  • C/C++ 字符串转数字函数

    千次阅读 2021-02-24 21:10:59
    功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后...
  • C/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr 在指定内存里定位给定字符strchr 在指定字符串里定位给定字符strcspn 返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量...
  • C++ 字符串逆序

    千次阅读 2021-07-21 06:12:21
    初始化为字符串字面值的副本 string s4(n,'c'); 初始化为n个字符为'c'的副本 string s5(cp,n); 初始化为cp所指数组的前n个字符的副本 string s6(s1,pos); 初始化为s1从下标pos开始的字符的副本 string s7(s1,pos,...
  • 一、 各种字符判断函数 头文件:#include <ctype.h> 检查字符是否为字母 isalpha(ch); 检查字符是否为数字 isdigit(ch); 检查字符是否为英文字母小写 islower(ch); 检查字符是否为英文字母大写 ...
  • UE4 C++字符串的处理

    2021-08-05 20:40:17
    C++中的字符串使用的是String处理的,可以进行截取,大小写转换,逆序等等功能。而UE4为了游戏中字符串的功能不同而封装了3种字符串的类型,分别是FName,FText和FString。 **FName**:在虚幻引擎中(UE4)的**内容...
  • C++ string(C++字符串)详解

    千次阅读 2021-05-19 18:38:44
    因此,C++ 标准模板库设计了 string 数据类型,专门用于字符串处理。string 类型的变量就是用来存放字符串的,也叫“string对象”。string 并不是 C++ 的基本数据类型,它是 C++ 标准模板库中的一个“类”。关于这...
  • 原文章地址:C++语言中反转字符串函数strrev(), reverse() ,作者:王陸 (侵删) 1.使用string.h中的strrev函数 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char s[]="hello"; 6...
  • 利用 C++函数实现一系列字符串处理函数 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p)取字符串长度 strcmp(p, p1) ...
  • 在我们处理各类编程问题时,常常会用到字符串,使用c/c++中自带的函数或方法往往能让我们更有效的处理字符串相关问题,在此总结了一些c/c++字符串的常用功能。 string常用功能 string是c++中的一个类,在使用时...
  • 字符串连接函数:strcat 该函数的定义原型为: char * strcat(char destination[],const source[]); 作用:将第二个参数的字符串连接到第一个参数的字符串结尾,要保证第一个参数的字符数组大小够用,能装的下第一个和第...
  • 发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++库函数中没有的字符串分割函数splitstring ...
  • //使用字符,字符串处理函数之前,先写好#include<string.h>,#include等头文件 //觉得对你有帮助,请点亮“小红花”。 字符函数: getchar()函数,可以以a=getchar()的方式由键盘录入一个字符,且该字符可以是...
  • C++字符串分割

    千次阅读 2021-02-24 21:17:06
    } } 这个方法的局限性就是没法使用空格以外的字符进行分割字符串 3.istringstream istringstream str(" this is a sentence"); string out; while (str >> out) { cout ; } 运行 this is a sentence 4. getline...
  • hello,大家好,今天给大家分享C++常用函数字符串操作函数 函数名:strcat 函数原型:char *strcat(char*strDestination,const char *strSource); 参数:strDestination 以空字符结尾的目的字符串 ...
  • 在 C 语言和 C++ 语言中,可用于实现字符串查找功能的函数非常多。在 STL 中,字符串的查找功能可以实现多种功能,比如说:搜索单个字符、搜索子串;实现前向搜索、后向搜索;分别实现搜索第一个和最后一个满足条件...
  • 1.都是c++的字符处理函数,把数字字符串转换成int输出 不同点: 1.头文件库不同:stoi()的头文件是<string>;而atoi()的头文件是<stdlib.h> 2.atoi()的参数是const char*,因此对于一个字符串str我们...
  • C++ 字符串模糊匹配

    2020-12-23 15:16:44
    C++ 字符串模糊匹配 参考链接:https://github.com/tajmone/fuzzy-search,https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/ 对原有的C语言代码进行了C++简单改写,使用...
  • C++字符串拷贝函数

    2021-03-24 18:54:49
    使用wcscpy_s一定要保证目标字符串的大小一定要比源字符串大,而且第二个参数指定的数量至少等于源字符串的大小+1(包括最后的\0) wcsncpy_s 带n的cpy函数是“安全”的。 申请字符内存后,初始化字符内存常用的...
  • 能完成字符串和数字转换的方法...字符串转数字的各个函数还可以选择从字符串的哪个位置开始转换,转换成整型量还可以选择不同的进制,具体见C++primer 328页。 2.使用stringstream 首先要包含sstream头文件,这个类继承
  • 代码: string str1 = "this is a test"; char* c = "this is a test"; cout (str1):" (str1) ; //28 cout (c):" (c) ; //14 cout ():" () ;... //返回下标 cout (str3) 查找到的字符在字符串中的位置是: " ; //4
  • C++中有哪些字符串操作函数发布时间:2021-01-06 16:30:55来源:亿速云阅读:89作者:Leah今天就跟大家聊聊有关C++中有哪些字符串操作函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,...
  • 1 使用to_string函数c++11标准中,我们可以使用to_string函数,将整型转换为字符串类型。1.1 to_string函数介绍to_string函数的用法如下:string to_string (int val);string to_string (long val);string to_...
  • string 类的成员函数有很多,同一个名字的函数也常会有五六个重载的版本。篇幅所限,不能将这些原型一一列出并加以解释。这里仅对常用成员函数按功能进行分类,并直接给出应用的例子,通过例子,读者可以基本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,603
精华内容 169,041
关键字:

c++字符串函数

c++ 订阅