栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ string 的简单用法

C/C++/C# 更新时间:发布时间: 百科书网 趣学号
 一、字符数组的常用函数(#include)

    (1)strlen(str),求字符串长度;

    (2)strcmp(a,b),比较两个字符串的大小(按字典序),ab返回;

    (3)strcpy(a,b),将字符串b复制给从a开始的字符数组;

二、字符串的常用操作(#include)      1.string的读写
#include
#include
using namespace std;
int main()
{
    string s1,s2;
    string s3=(3,'c');//s3的内容是:ccc;
    cin>>s1>>s2;
    cout< 
     2.读入含有空格的字符串 

     cin读到空格就会终止

类型函数输入读入
string sgetline(cin,s)ab cdab cd
char s[100]cin.getline(s,100)ab cdab cd
char s[100]

fgets(s,100,stdin)

但是要注意最后会读入一个回车

ab cdab cdn

    fgets回车去除方法:

if(s[strlen(s)-1]=='n')
    s[strlen(s)-1]=0;
 3.string的常用函数

(1)s.empty()         判断string是否为空,如果为空返回1,不是空返回0;

(2)s.size()             string的长度,比strlen快;

(3)s.pop_back()    把string的最后一个字符删掉;

(4)s.substr(0,3)     返回某一范围的字符,如果只有一个参数,返回的是该位置开始之后的所有字符;

4.可以直接比较,直接进行相加
string s1="hello ",s2="world";
string s3=s1+s2;
s3+=s1;//可以进行累加操作
s3=s3+" ooo "+'!';//可以直接加字符串和字符

string s4="hello"+",";//错误,两个运算对象都不是string;
string s5=s1+","+"world";//正确,每个加法都有一个运算符是string
string s7="hello"+","+s2;//错误,运算是从左往右计算的
5.string可以当作字符数组输出
string s="hello world!";
//方法1
for(int i=0;i 
三、stringstream ssin(s)(#include) 

     定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。主要用来进行数据类型转换。比sscanf,sprintf更加安全。

1.sprintf函数
int main(){
    char str[66]={0};
    int n=1000;
    sprintf(str,"%d",n);
    //将数字变量转化为字符串

    sprintf(str,"0x%X",n);
    //得到整形变量16进制字符串

    sprintf(str,"0%o",n);
    //得到整形变量8进制字符串

    const char *s1="hello";
    const char *s2="world";
    sprintf(str,"%s %s",s1,s2);
    //连接多个字符串

    cout< 
2.sscanf函数 
#include
#include
int main(){
    char s1[100];
    sscanf("12345","%4s",s1);
    printf("%sn",s1);//输出1234   *取指定长度的字符串
    
    char s2[100],s3[100],s4[100];
    gets(s2);//输入aaa bbb ccc
    sscanf(s2,"%s%s",s3,s4);
    printf("%s %sn",s3,s4);
    //输出aaa bbb    *读入字符串
 
    char s5[100];
    sscanf("1234abcd","%*d%s",s5);
    printf("%sn"s5);
    //输出abcd    *%*d和%*s加了(*)表示跳过此数据不读入

    char s6[100];
    sscanf("123+abc","%[^+]",s6);
    printf("%sn",s6);
    //输出1234    *取到指定字符为止的字符串,如此例,读到‘+’为止的字符串

    
    char s7[100];
    sscanf("1234abcd12","%[^a-z]",s7);
    printf("%sn",s7);
    //输出1234    *取到指定字符集为止的字符串,如此例,读到小写字母为止的字符串

    char s8[100];
    sscanf("1234abcdABCD12","%[1-9a-z]",str);
    printf("%sn",s8);
    //输出1234abcd    *取仅包含指定字符集的字符串,如此例,取仅包含数字和小写字母的字符串
    
    return 0;
}
3.stringstream函数

    使用stringstream可将字符串初始化为一个类似cin的东西,之后就可以读取出来任意我们需要格式的信息(以空格为界)

    基本用法:

#include
#include
using namespace std;
int main
{
    string s;
    getline(cin,s);
    stringstream ssin(s);
    //将string s初始化为一个字符串流,定义完后将ssin当作cin就可以了
    //和cin几乎一样,不同的是在s字符串中读取信息
    int a,b;
    string str;
    double c;
    ssin>>a>>str>>b>>c;
    cout<

 

 例题:

输入一个字符串,以回车结束(字符串长度不超过 100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入格式:
输入共 3 行。

第 1 行是包含多个单词的字符串 s;

第 2 行是待替换的单词 a(长度不超过 100);

第 3 行是 a 将被替换的单词 b(长度不超过 100)。

输出格式:
共一行,输出将 s 中所有单词 a 替换成 b 之后的字符串。

输入样例:
You want someone to help you
You
I

输出样例:
I want someone to help you

#include
#include
using namespace std;
int main(){
    string s,a,b;
    getline(cin,s);
    cin>>a>>b;
    stringstream ssin(s);
    string str;
    while(ssin>>str)
        if(str==a) cout< 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1033129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号