字符串string的使用

本文介绍了C++相对于C语言在处理字符串上的优势,如使用string数据结构。文中通过示例展示了如何初始化和操作字符串,包括从字符数组转换、下标和迭代器访问、增删改查、查找以及切片等操作。此外,还提供了一个特殊乘法的代码实例,演示了字符串在计算中的应用。
摘要由CSDN通过智能技术生成

由于C语言本身并不提供字符串的操作,若要对一个字符串进行操作,必须利用字符数组(以‘\0’为终止符),来对一个一个字符的存储与操作,极其不方便。
相比较而言,C++提供了字符串数据结构(string),它可以很方便的对字符串进行基本操作。

头文件引用

#include<string>
using namespace std;

初始化操作

//法1:先输入字符数组a,将a中内容赋值给str1
    char a[100];
    fgets(a, 100, stdin);//将一行的输入内容读入a中,以‘\n’作为终止符,stdin表示标准输入输出
    string str1 = a;
//法2;在初始化时就输入内容	
    string str2 = "Hello world!";  

访问元素(下标访问、迭代器访问)

//通过下标访问每个元素
    for( unsigned int i = 0; i < str.size(); i++){
        printf("%c\n", str[i]);//%c来输出字符元素
    }
//通过迭代器访问每个元素
    for(string::iterator it = str.begin(); it != str.end();it++) {
        printf("%c\n", *it);
    }
    //也可以这样写
    for(auto it = str.begin(); it != str.end(); it++) {
    	printf("%c\n", *it);
    }
    

增删改查、查找、切片、其他操作

  • 基本操作(增删改查)
string str = "Hello world!";
//增
str.insert(site, " end world");//插入元素到指定位置
//删
str.erase(site);//删除指定位置到最后的所有元素
str.erase(site,lens);//删除从site位置开始,长度为lens的字符串

  • str的find操作
  1. 如果找到了,返回匹配内容的起点下标
  2. 如果没找到,返回string::npos(相当于“-1”)
string str ="how are you";
int pos = str.find("you");
if(pos != string::npos){		//找到了,输出:found = 8
    printf("found = %d\n", pos);
}
else{							//没找到,输出:no found
    printf("no found\n");
}
  • 切片操作(返回子串)
string str = "We think in generalities, but we live in details.";
string str1 = str.substr(3,5);//返回str中位置为3开始,长度为5的子串,结果为:think
  • 其他操作
//其他操作
    string str = "Hello world!";
    int len1 = str.size();//读取字符串str的长度
    int len2 = str.length();//读取字符串str的长度,与size()函数相同
    string str1 = "Nice to";
    string str2 = " meet you.";
    str = str1 + str2;//利用运算符“+”将str1与str2连接起来
    str.clear();//清空str内的所有元素

相关例题

在这里插入图片描述

//特殊乘法 题解
#include<cstdio>
#include<string>

using namespace  std;

int main(){
    char a[1000];
    char b[1000];
    while(fgets(a, 1000, stdin)!= NULL){
        long long int result = 0;
        int num;
        string str1 = a;
        for(int i = 0; i<str1.size(); i++){
            if(str1[i] == ' '){
                num = i;
                break;
            }
        }
        string str2 = str1.substr(num+1, str1.size() - num-2);
        str1 = str1.substr(0,num);
        for(int i = 0; i < str1.size(); i++){
            for(int j = 0; j < str2.size(); j++){
                result = result + (int)(str1[i] - '0')*(int)(str2[j] - '0');
            }
        }
        printf("%lld\n",result);
    }
}

参考内容:
机试的意义和主要内容
机试指南
牛客网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值