刷题遇到的各种 之 字符串

Posted expedition

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题遇到的各种 之 字符串相关的知识,希望对你有一定的参考价值。

 

一、C++ strcpy字符串赋值函数

strcpy(Cstring, value);

Cstring 是接收值的变量的名称,而 value 则是字符串常数或另一个 C 字符串变量的名称

#include <iostream>
#include<string.h>
using namespace std;

int main()
{
    const int SIZE = 12;
    char name1[SIZE], name2[SIZE];
    strcpy(name1, "Sebastian");
    cout << "name1:" << name1 << endl;
    strcpy(name2, name1);    //将  name1 赋值给 name2 
    cout << "name2:" << name2 << endl;
    return 0;
}

技术图片

 

 

二、C++ 其余常见字符串处理函数:

技术图片

 

 

  • 1. append() -- 在字符串的末尾添加字符
  • 2. find() -- 在字符串中查找字符串
  • 4. insert() -- 插入字符
  • 5. length() -- 返回字符串的长度
  • 6. replace() -- 替换字符串
  • 7. substr() -- 返回某个子字符串

示例:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    //定义一个string类对象
    string http = "www.runoob.com";

   //打印字符串长度
   cout<<http.length()<<endl;

    //拼接
    http.append("/C++");
    cout<<http<<endl; //打印结果为:www.runoob.com/C++

    //删除
    int pos = http.find("/C++"); //查找"C++"在字符串中的位置
    cout<<pos<<endl;
    http.replace(pos, 4, "");   //从位置pos开始,之后的4个字符替换为空,即删除
    cout<<http<<endl;

    //找子串runoob
    int first = http.find_first_of("."); //从头开始寻找字符‘.‘的位置
    int last = http.find_last_of(".");   //从尾开始寻找字符‘.‘的位置
    cout<<http.substr(first+1, last-first-1)<<endl; //提取"runoob"子串并打印

    return 0;
}

 

 

 

三、stringstream常见用法介绍

<sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作

<sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言,<sstream> 更加安全、自动和直接

(1)数据类型转换

#include <string>

#include <sstream>

#include <iostream>

#include <stdio.h>

 

using namespace std;

 

int main()

{

    stringstream sstream;

    string strResult;

    int nValue = 1000;

 

    // 将int类型的值放入输入流中

    sstream << nValue;

    // 从sstream中抽取前面插入的int类型的值,赋给string类型

    sstream >> strResult;

 

    cout << "[cout]strResult is: " << strResult << endl;

    printf("[printf]strResult is: %s
", strResult.c_str());

 

    return 0;

}

技术图片

 

 

(2)多个字符串拼接

在 stringstream 中存放多个字符串,实现多个字符串拼接的目的(其实完全可以使用 string 类实现),同时,介绍 stringstream 的清空方法

#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
    stringstream sstream;
    // 将多个字符串放入 sstream 中
    sstream << "first" << " " << "string,";
    sstream << " second string";
    cout << "strResult is: " << sstream.str() << endl;

    // 清空 sstream
    sstream.str("");
    sstream << "third string";
    cout << "After clear, strResult is: " << sstream.str() << endl;
    return 0;

}

技术图片

 

  1.  可以使用 str() 方法,将 stringstream 类型转换为 string 类型
  2.  可以将多个字符串放入 stringstream 中,实现字符串的拼接目的;
  3.  如果想清空 stringstream,必须使用 sstream.str(""); 方式;
  4. clear() 方法适用于进行多次数据类型转换的场景,见链接中的示例

详情可戳上方的链接

 

 

四、C++ isalpha、isalnum、islower、isupper

这些函数都在<cctype>(即C语言中的<ctype.h>)的头文件里面

技术图片

 

技术图片

 

 

总的来说:

  • isalpha (字母,包括大写、小写)
  • islower(小写字母)
  • isupper(大写字母)
  • isalnum(字母大写小写+数字)
  • isblank(space和 )
  • isspace(space、 、 、 )

以上是关于刷题遇到的各种 之 字符串的主要内容,如果未能解决你的问题,请参考以下文章

刷题遇到的各种

leetcode刷题之数组NO.5

leetcode之模拟刷题总结1

leetcode之动态规划刷题总结1(Java)

基于C#解决OJ刷题之输入输出问题的总结(AKOJ1064-1071A+B问题汇总)

前端面试题之手写promise