C++ 如何遍历string字符串
如果要遍历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('/'))……
相当于JAVA的强for循环的语法结构。相当于C++的:
for( int i = 0; i < s.length(); i++)
{ s[i]....
}
1、常规方式(下标+operator[])。
2、使用迭代器遍历字符串。
3、新式for循环 (第三种字符串遍历方式源自于c++11)。
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j"。
而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
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
如果要遍历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 str = "2015/9/9"
int l = str.length();
for(int i = 0 ;i < l ;i++)
cout << str[i];
只安硫酸: #include using namespace std; int main(){ string s; vector s1; if (cin >> s){ for (auto a = s.begin(); a != s.end(); a++){ s1.push_back(*a); } } for (int i = 0; icout } } auto会自动获取变量类型 a作为指针遍历 结果储存在vector容器输出即可
唐河县17161115847: C++中的string遍历器如何使用? - ?
只安硫酸: 你可以试着用下strstream 这个string的处理类 用着还是不错的.另外,如果你想知道你的程序出错在哪里了,最好把你出错的代码贴上来.
唐河县17161115847: c++ vector<string>用iterator遍历 - ?
只安硫酸: 试试以下代码#include #include #include using namespace std ; int main(){ string arr[4]={"hello","world","name","address"}; vector ivec(arr,arr+4); for(vector::iterator iter1=ivec.begin(); iter1!=ivec.end(); ++iter1 ){ cout for( size_t sty=0;sty!=(*iter1).size(); ++sty){ cout } cout} return 0; }
唐河县17161115847: c++里map<string,string>怎么遍历 - ?
只安硫酸: #include <map> #include <string> #include <iostream> using namespace std; int main() { map<string,string> m; m.insert(pair<string, string>("小红","1班")); m.insert(pair<string, string>("小明", "2班")); m.insert(pair<string, ...
唐河县17161115847: c++如何用scanf读入string类型的字符串 ? - ?
只安硫酸: 学了半年c++,基本用 cin cout 不用 printf and scanf 首先他们的头文件不同 这关乎计算机内部的文件流本质上不同的 c++因为兼容c 才有 printf scanf,string 类型是c++标准后来添加的 与兼容c的printf h和scanf 有区别吧 我估计两者不能兼容 用cin cout就可以控制string类型字符串了
唐河县17161115847: C++编程:以字符串的形式输入 “ - 2x^2 + 5y - 7 ” ,怎么从string里面得到int、char数据? - ?
只安硫酸: 给个思路给你,这电脑没编译器.可以使用下标对string里面的字符串依次进行遍历:string s ="-2x^2 + 5y -7"; for (int index = 0; index != s.size() ; ++index) { if (s[index] > '0' && s[index]// ............... // ..............或者在循环内,使用switch语句,对0~9每种可能性都列出来.
唐河县17161115847: C++函数返回string类型 - ?
只安硫酸: 如果是简单的字符串,可以使用char *做为返回.如果是string 类对象.需要 使用 String 类. 头文件是#include <string.h> 其中包含多种字符串处理函数.当返回String 类对象的时候,记得使用引用.
唐河县17161115847: C++如何从String的指定位置搜索一个子串? - ?
只安硫酸: #include<iostream>#include<string> using namespace std; void main() { int pos=1; string a="0AA00AA00"; char str[]="AA"; while(1) { pos=a.find(str,pos+1); if(pos==-1)break; cout<<pos<<endl; } system("pause"); }
唐河县17161115847: C++ 函数怎么返回string - ?
只安硫酸: 让一个函数返回字符串,让主函数接收使用,有几种方法:1.通过函数的参数指定一个指针,然后在函数体内对指针赋值. 如:char temp[10]; void func(char *t) {strcpy(t, "test"); } func(temp);即可2.通过返回值 如:char* func() {char *temp = new char[5];strcpy(temp, "test");return temp; }char *me=func();即可
唐河县17161115847: C++求救 如何输入并处理一串未知长度的字符串? 要怎样才能遍历字符串所有元素并单独运算? - ?
只安硫酸: 用string吧 用法很简单而且有很多使用的函数 你可以百度一下