C++ 如何遍历string字符串

作者&投稿:家霭 (若有异议请与网页底部的电邮联系)
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];


唐河县17161115847: C++关于用指针遍历一个string -
只安硫酸: #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吧 用法很简单而且有很多使用的函数 你可以百度一下

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网