C++ 如何遍历string字符串 35
从数据库中读取的时间,string类型,格式为2015/9/9,有的则为2014/10/5,想将所有的月份都格式化为201509这种格式,想法是截取两个'/'之间的字符(...
从数据库中读取的时间,string类型,格式为2015/9/9 ,有的则为2014/10/5,想将所有的月份都格式化为201509这种格式,
想法是截取两个'/'之间的字符(即月份),判断字符长度,长度为1则在月份前面加‘0’。
如何遍历‘2015/9/9 ’?或者还有什么更好的方法? 展开
想法是截取两个'/'之间的字符(即月份),判断字符长度,长度为1则在月份前面加‘0’。
如何遍历‘2015/9/9 ’?或者还有什么更好的方法? 展开
5个回答
展开全部
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中代码单元的个数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果要遍历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上那篇文章,也是一种方法,但是我写不好……
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上那篇文章,也是一种方法,但是我写不好……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string str = "2015/9/9"
int l = str.length();
for(int i = 0 ;i < l ;i++)
cout << str[i];
int l = str.length();
for(int i = 0 ;i < l ;i++)
cout << str[i];
更多追问追答
追问
不是输出字符串。。
追答
你不是要遍历么……这不就是遍历么……你把输出那里改成你想要的不就是了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询