7.C++中string的一些超常用函数 (附习题)

简介: 7.C++中string的一些超常用函数 (附习题)


1.find

1.查找第一次出现的目标字符串说明:如果查找成功则输出查找到的第一个位置,否则返回-1;

s1.find(s2)

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s1 = "abcdef";
    string s2 = "de";
    int ans = s1.find(s2) ;   //在S1中查找子串S2
    cout << ans << endl;
    system ("pause");
}

2.查找从指定位置开始的第一次出现的目标字符串

s1.find(s2, 2)

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s1 = "abcdef";
    string s2 = "de";
    int ans = s1.find(s2, 2) ;   //从S1的第二个字符开始查找子串S2
    cout << ans << endl;
    system("pause");
}

2.atoi

atoi()函数的语法非常简单

int atoi (const char * str);
  • int integer type which is the type of returned value.
    int整数类型,它是返回值的类型。
  • const char * is a constant char array that is equal to a string whose variable name is str.
    const char * 表示传入一个指向常量字符的指针,名为str

作用:在C和C ++中将字符串/字符转换为整数 (Convert String/Char To Integer In C and C++)

可以参考如下实例:

#include <iostream>
#include <cstdlib>
 
int main()
{
    const char *str1 = "57";
    const char *str2 = "314.159";
    const char *str3 = "52345 some text";
    const char *str4 = "some text 25";
 
    int mynum1 = std::atoi(str1);
    int mynum2 = std::atoi(str2);
    int mynum3 = std::atoi(str3);
    int mynum4 = std::atoi(str4);
 
    std::cout << "atoi(\"" << str1 << "\") is " << mynum1 << '\n';
    std::cout << "atoi(\"" << str2 << "\") is " << mynum2 << '\n';
    std::cout << "atoi(\"" << str3 << "\") is " << mynum3 << '\n';
    std::cout << "atoi(\"" << str4 << "\") is " << mynum4 << '\n';
}

If given string or char array is floating-point like “314.159”  in only integer part will be converted where the result will be “314”

如果给定的字符串或char数组是浮点数,例如“ 314.159”,则仅整数部分将被转换,结果为“ 314”

If there are some non-numerical chars in the given char array or string they will not convert and there will be no error where only the integer part will be converted. As an example “52345 some text” will be converted 52345

如果给定的char数组或字符串中有一些非数字char,它们将不会转换,并且只有整数部分会被转换也不会出错。 例如,“ 52345 some text”将被转换为52345

If the start of the char array or string and there are numerical characters after them this will be converted into 0 as an integer value. As an example “some text 25” will be converted into 0.

如果char数组或字符串的开头,并且后面有数字字符,则将其转换为0作为整数值。 例如,“一些文本25”将转换为0。

If the numerical characters are between non-numeric characters the conversion result will be 0 too.

如果数字字符介于非数字字符之间,则转换结果也将为0。

If the char array or string starts with numeric character and after that, there is a non-numeric, and then numeric character only the starting numeric character will be converted. As an example “25 text 50” will be converted into 25.

如果char数组或字符串以数字字符开头,并且之后是非数字字符,则仅将起始数字字符转换为数字字符。 例如,“ 25个文本50”将转换为25。

【总结来说】:字符转化为数字,是以起始为主要参考的

3.to_string

数字常量转换为字符串,返回值为转换完毕的字符串

头文件:#include < string >(必须加)

string s = to_string(i); //将整数i转换为字符串表示形式

附:如果是string s = to_string(‘3’),则结果是s = 51。
需要对s = s -48; 才能得到正确的结果。

#include <iostream>   
#include <string>     
using namespace std;
 
int main()
{
    string pi = "pi is " + std::to_string(3.1415926);
    string perfect = to_string(1 + 2 + 4 + 7 + 14) + " is a perfect number";
    cout << pi << '\n';
    cout << perfect << '\n';
    system("pause");
    return 0;
}

4.getline

作用:打印一行字符串(可打印空格)

应用:

题解:

【leetcode 习题】

387.字符串中的第一个唯一字符

!!!  get以坐标为方式的查找次数加法  count [ s [ i ] ]+=1

125. 验证回文串

如果有兴趣了解原理,可以读一下下面这篇文章,来更深入的了解string:

STL 的string类怎么啦


相关文章
|
16天前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
38 5
|
16天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
27 2
|
2月前
|
C++ 容器
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
23 1
|
2月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
64 6
|
2月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
27 0
C++ 多线程之线程管理函数
|
2月前
|
C++ 容器
|
2月前
|
C++ 容器
|
2月前
|
存储 C++ 容器