c++字符串与复杂输入处理
string字符串
分类
C风格字符串:以 '\0'
结尾的 char 数组。
c++风格 string
:STL中提供的字符串类,进行了封装。
在ACM中,在不配合容器等的使用中 ,推荐使用C风格字符串,其操作更灵活。
字符串转为数字型
很多时候都会遇到将字符串作为输入转换为数值或者把数值转为字符串的情况。
c风格字符串
使用<cstdlib.h>
中的函数
-
atof(char *str)
转译C风格字符串str为浮点值 -
atoi(char *str)
、atol(char *str)
atoll(char *str)
(C++11) 转译C风格字符串str为整数值(int、 long、long long)
上述函数取尽可能长的符合要求的字符串
c++风格字符串
stoi(string &s)
stol(string &s)
stof(string &s)
stod(string &s)
...
类似的,根据结尾可判断返回的类型:
i: 返回int型
l:返回long
f:返回float
d:返回double
ll:返回long long
ull:返回unsigned long long
ld:返回long double
格式化输入
-
使用
<cstdio>
中的函数-
sscanf(char *buffer, char *format, ...)
以buffer为源,进行格式化输入 -
sprintf(char *buffer, char *format, ...)
格式化输出到buffer
-
-
使用
<sstream>
stringstream strin(str)
str为C风格字符串或string,可以使用形如strin<<a
;strin>>b
;的方式来向str中输入或输出istringstream
为只读,ostringstream
为只写
基本操作
-
创建
string str = "12345abcd"; string str(c_str); //c_str为一个C风格字符串
-
常用操作
str[n] //读写下标为n的字符 str.c_str() //返回str对应的只读C风格字符串 str.data() //返回指向str中字符串首地址的指针 str.begin() str.end() str.rbegin() str.rend() //返回迭代器 str.empty() //检查字符串是否为空 str.size() //返回字符数 str.length() //返回字符数 str.clear //清除内容 str.push_back(ch) //后附"字符"ch到结尾 str += str1 //后附string str1到str的结尾 str+str1 //返回str和str1首尾连接后产生的string
string s, s1; s = "abcdefg"; s.size(); s.at(n); ///读写下标为n的字符 s.find(s1, 0); //从前往后, 从第0个开始查找 s.rfind(s1); //从后往前 s.replace(0, 3, s2); //把从0开始的3个字符替换为s2(s2可以不是3个字符) s.compare(s1); //相等返回0,s>s1返回1,s<s1返回-1 s.substr(0, 5); //从0开始截取5个字符 s.insert(0, s1); //在0的位置后面插入s1 s.erase(0, 4); //从0开始删除4个字符
复杂输入处理
无结束标志的数据输入
通过判断是否读到EOF来决定是否停止输入
-
scanf()==EOF
-
getchar()==EOF
-
cin==false
while(scanf("%d",&a)!=EOF)
while(ch=getchar()&&ch!=EOF)
while(cin>>a)
整行输入
cin.getline(str, length);
//str是一个char数组或string,用于存储输入结果。
//length用于限制最长输入长度
本文来自博客园,作者:aJream,转载请记得标明出处:https://www.cnblogs.com/ajream/p/15383530.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人