C++ 如何遍历string字符串 35

从数据库中读取的时间,string类型,格式为2015/9/9,有的则为2014/10/5,想将所有的月份都格式化为201509这种格式,想法是截取两个'/'之间的字符(... 从数据库中读取的时间,string类型,格式为2015/9/9 ,有的则为2014/10/5,想将所有的月份都格式化为201509这种格式,
想法是截取两个'/'之间的字符(即月份),判断字符长度,长度为1则在月份前面加‘0’。
如何遍历‘2015/9/9 ’?或者还有什么更好的方法?
展开
 我来答
苏Kate
高粉答主

2019-09-03 · 说的都是干货,快来关注
知道答主
回答量:1346
采纳率:0%
帮助的人:52.6万
展开全部

1、常规方式(下标+operator[])。

2、使用迭代器遍历字符串

3、新式for循环  (第三种字符串遍历方式源自于c++11)。

字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j"。

而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。

百度网友faadf46
高粉答主

2019-07-23 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:75.1万
展开全部

1、补充subStr:str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str。

2、str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str。

3、trim()是去掉字符序列左边和右边的空格,如字符串str = "   ai lafu yo   ";str = trim(str);输出的将是"ai lafu yo"。

4、用UTF-16编码char和String中的字符,一个字符对应的编码值被称为一个代码点。有的代码点用16位编码,被称为一个代码单元,像char表示的那些字符;有的代码点用32位编码,也就是用两个连续的代码单元编码,如上文中的\ud801\uDC00。

5、返回的是字符串s中代码单元的个数。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alanwang0018
2019-11-15
知道答主
回答量:2
采纳率:0%
帮助的人:1343
展开全部
#include <iostream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
string s = "123,456,789,";
unsigned int iSize = s.size();
cout << iSize << endl; // 12
cout << s.length() << endl; // 12

unsigned int i = 0;
int iCount = 0;
for(i = 0; i < iSize; i++)
{
if(',' == s[i])
{
iCount++;
}
}

cout << iCount << endl; // 3

return 0;
}
本文很简单。
原文链接:https://blog.csdn.net/stpeace/article/details/50406627
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
331544631
2017-08-26 · TA获得超过256个赞
知道答主
回答量:66
采纳率:0%
帮助的人:19.6万
展开全部
如果要遍历string可以用指针
string s;
for(char *p = s; *p; p++){……}
或者简单的
for(int i=0;i<s.length;++i)
if(s[i]=='/'){……}
其他方法:
①(年份都是四位数的话):
if (s[6] == '/') {s.insert(5, 1, '0');}
②用sscanf和sprintf(c的方法所以不支持string)
char s[10],a[2];
scanf("%s", &s);
sscanf(s, "%*[^/]/%[^/]", a);
a就是两个'/'之间的字符串
③用find函数找到月份位置再截取月份,s.left(s.find('/'))……
④自己写个函数:百度知道1382004468829644860
另外你可以直接百度"scanf中的%[^]%*c格式",csdn上那篇文章,也是一种方法,但是我写不好……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liruih8121099
游戏玩家

推荐于2017-05-21 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:561
采纳率:75%
帮助的人:174万
展开全部
string str = "2015/9/9"

int l = str.length();
for(int i = 0 ;i < l ;i++)
cout << str[i];
更多追问追答
追问
不是输出字符串。。
追答
你不是要遍历么……这不就是遍历么……你把输出那里改成你想要的不就是了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式