如何实现C语言中对字符串类型进行一系列操作的功能?

2026-04-16 23:112阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计808个文字,预计阅读时间需要4分钟。

如何实现C语言中对字符串类型进行一系列操作的功能?

1. 定义和初始化字符串对象 string s;默认初始化,s 是一个空字符串。

2.string s=hello;或 string s=(hello);或 string s2(10, s1);复制 s1 的前 10 个字符到 s2 中。

3.s 的内容是 hello。

1. 定义和初始化string对象

  • string s;

默认初始化,s是一个空字符串。

  • string s = “hello”;或者string s(“hello”);或者string s2(10, s1)拷贝s1的前10个字符到s2中。

s的内容是“hello”

  • s.empty( ) 为空返回true。
  • s.size()返回字符个数。
    • 返回值是string::size_type类型的值,size_type属于unsigned类型,能够存放下任何string对象的大小,一般用unsigned,或者auto来保存。
  • s1+s2 相加,相连, s1=s2 赋值, s1==s2 判断相同,s1!=s2 判断不同,>,< 按字典顺序判断大小
    • 相加时,只能一个string类型和一个字面值相加,或者两个string类型对象相加,不能两个字面值相加,编译器无法识别。(字面值与string对象不是同一类型)
    • string s = “abc”+“def”;//错误的

2. 读取string对象

IO操作

cin>>s; 以空白为结束。因此如果输入hello world只能读入hello。可以cin>>s1>>s2; 输入两个。

读取未知数量的string对象,可以用:

string s; while(cin >> s){ //处理s }

  使用getline读取一整行(可以保留空格),getline函数的参数是一个输入流和一个string对象,直到遇到换行符。

while(getline(cin,s)){ //处理s }

3. 处理string对象

  • for循环处理:

for(auto c:s){ //实际上c是char类型 //处理c }
eg:
for(auto &c:s){
c = toupper(c); //c是一个引用,因此赋值语句可以改变s的值
}

或者使用下标运算符[ ] , 下标运算符接收的是unsighed类型的值。s[0],s[1]返回值是该位置上字符的引用,

  • 关于大小写和数字的常用方法:

isalpha(c) 字符是字母;isdigit(c)是数字;islower(c)是小写字母;isupper(c)是大写字母;isspace是空格;

toupper( c )转为大写字母;tolower(c)转为小写字母;

4. 搜索string

  • find函数,若找到,返回第一个匹配到的下标(string::size_type类型),

否则返回npos(npos是一个string::size_type类型, 并初始化为-1,表示任何string最大的可能大小)

string s(“hello”);

auto p = s.find("world"); //p这是=nops

  • 其他的find函数

s.rfind(args) 找到s中最后一次出现args的位置

如何实现C语言中对字符串类型进行一系列操作的功能?

s.find_first_of (args) 找到s中第一次出现args任何字符的位置

s.find_last_of (args) 找到s中最后一次出现args任何字符的位置

s.find_first_not_of (args) 找到s中第一次出现不属于args任何字符的位置

s.find_last_not_of (args) 找到s中最后一次出现不属于args任何字符的位置

(args中可以加上特定位置类似(c,pos),用来指定从哪里开始搜索)

eg: unsigned pos;

pos = s.find_first_of ( s1 );

if(pos!=nops){// s中有s1中的字符}

  • substr()方法,给出位置,返回子串

string s1 = s.substr(i);返回从i位置开始的子串

5. 数值转换

int i=123;

string s = to_string(i); 整数转换为string

double d = stod(s); 字符串转浮点数

本文共计808个文字,预计阅读时间需要4分钟。

如何实现C语言中对字符串类型进行一系列操作的功能?

1. 定义和初始化字符串对象 string s;默认初始化,s 是一个空字符串。

2.string s=hello;或 string s=(hello);或 string s2(10, s1);复制 s1 的前 10 个字符到 s2 中。

3.s 的内容是 hello。

1. 定义和初始化string对象

  • string s;

默认初始化,s是一个空字符串。

  • string s = “hello”;或者string s(“hello”);或者string s2(10, s1)拷贝s1的前10个字符到s2中。

s的内容是“hello”

  • s.empty( ) 为空返回true。
  • s.size()返回字符个数。
    • 返回值是string::size_type类型的值,size_type属于unsigned类型,能够存放下任何string对象的大小,一般用unsigned,或者auto来保存。
  • s1+s2 相加,相连, s1=s2 赋值, s1==s2 判断相同,s1!=s2 判断不同,>,< 按字典顺序判断大小
    • 相加时,只能一个string类型和一个字面值相加,或者两个string类型对象相加,不能两个字面值相加,编译器无法识别。(字面值与string对象不是同一类型)
    • string s = “abc”+“def”;//错误的

2. 读取string对象

IO操作

cin>>s; 以空白为结束。因此如果输入hello world只能读入hello。可以cin>>s1>>s2; 输入两个。

读取未知数量的string对象,可以用:

string s; while(cin >> s){ //处理s }

  使用getline读取一整行(可以保留空格),getline函数的参数是一个输入流和一个string对象,直到遇到换行符。

while(getline(cin,s)){ //处理s }

3. 处理string对象

  • for循环处理:

for(auto c:s){ //实际上c是char类型 //处理c }
eg:
for(auto &c:s){
c = toupper(c); //c是一个引用,因此赋值语句可以改变s的值
}

或者使用下标运算符[ ] , 下标运算符接收的是unsighed类型的值。s[0],s[1]返回值是该位置上字符的引用,

  • 关于大小写和数字的常用方法:

isalpha(c) 字符是字母;isdigit(c)是数字;islower(c)是小写字母;isupper(c)是大写字母;isspace是空格;

toupper( c )转为大写字母;tolower(c)转为小写字母;

4. 搜索string

  • find函数,若找到,返回第一个匹配到的下标(string::size_type类型),

否则返回npos(npos是一个string::size_type类型, 并初始化为-1,表示任何string最大的可能大小)

string s(“hello”);

auto p = s.find("world"); //p这是=nops

  • 其他的find函数

s.rfind(args) 找到s中最后一次出现args的位置

如何实现C语言中对字符串类型进行一系列操作的功能?

s.find_first_of (args) 找到s中第一次出现args任何字符的位置

s.find_last_of (args) 找到s中最后一次出现args任何字符的位置

s.find_first_not_of (args) 找到s中第一次出现不属于args任何字符的位置

s.find_last_not_of (args) 找到s中最后一次出现不属于args任何字符的位置

(args中可以加上特定位置类似(c,pos),用来指定从哪里开始搜索)

eg: unsigned pos;

pos = s.find_first_of ( s1 );

if(pos!=nops){// s中有s1中的字符}

  • substr()方法,给出位置,返回子串

string s1 = s.substr(i);返回从i位置开始的子串

5. 数值转换

int i=123;

string s = to_string(i); 整数转换为string

double d = stod(s); 字符串转浮点数