C++ 如何遍历string字符串

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

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

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

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

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-23

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中代码单元的个数。

本回答被网友采纳
第2个回答  2019-11-15
#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
第3个回答  2017-08-26
如果要遍历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上那篇文章,也是一种方法,但是我写不好……本回答被网友采纳
第4个回答  推荐于2017-05-21
string str = "2015/9/9"

int l = str.length();
for(int i = 0 ;i < l ;i++)
cout << str[i];追问

不是输出字符串。。

追答

你不是要遍历么……这不就是遍历么……你把输出那里改成你想要的不就是了

追问

要遍历并输出两个特殊字符之间的字符串。。这个是关键。。

追答

拿两个变量记下/的位置,第一个前面的,两个中间的,第二个后面的挨个输出不就行了。
最简单的方法就是你读入的时候就不要字符串读,读一个数,读一个字符,读一个数,读一个字符,再读一个数啥事都没了

相似回答