c++字符串你怎么处理
2014-05-19 18:09:37 Road2010 阅读数 762
 

string定义:

a) string s;

//生成一个空字符串s

string a="eholldfs";

    a="dfgdfg";

    cin>>a;

b) string s(str)

 //拷贝构造函数生成str的复制品

c) string s(str,stridx)

 //将字符串str"始于位置stridx"的部分当作字符串的初值

d) string s(str,stridx,strlen)

//将字符串str"始于stridx且长度顶多strlen"的部分作为字符串的初值

e) string s(cstr)

//C字符串作为s的初值

f) string s(chars,chars_len)

//C字符串前chars_len个字符作为字符串s的初值。

g) string s(num,c) àstring a(7,’0’)

//生成一个字符串,包含numc字符

h) string s(beg,end)

//以区间beg;end(不包含end)内的字符作为字符串s的初值

i)                    s.~string()

//销毁所有字符,释放内存

string函数:

1.string int

number = atoi( st.c_str() );

2.int string

函数名称: itoa
函数原型
: char *itoa(int value,char *string,int radix)
函数功能: 将整形数value转换为其等价的字符串

函数返回: 指向string的指针
参数说明: value-要转化的数值,radix-转换的进制,如10表示按十进制转换  
所属文件
: <stdlib.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
  int number=123456L;
  char string[25];
  ltoa(number,string,10);
  printf("integer=%ld string=%s",number,string);
  return 0;
}

 

 

 

itoa函数

求助编辑百科名片

itoa为c语言的一个函数。itoa函数是一个广泛应用的,从非标准扩展到标准的C语言。它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通过header<stdlib.h> ,因为它是一个从逻辑对应到标准库的函数。itoa取整数输入值,并将其转换为数字的基数。

目录

原 型

功 能

1.    用 法

程序例

1.    注意事项:?

数字转化为字符串函数名 及 功能

展开

原 型

功 能

1.    用 法

程序例

1.    注意事项:?

数字转化为字符串函数名 及 功能

展开

编辑本段原 型

  char *itoa( int value, char *string,int radix);

  原型说明:

  value欲转换的数据。

  string:目标字符串的地址。

  radix:转换后的进制数,可以是10进制、16进制等。

编辑本段功 能

  把一整数转换为字符串

用 法

  itoa(i,num,10);

  i ----需要转换成字符串的数字

  num---- 转换后保存字符串的变量

  10---- 转换数字的基数(即进制)。10就是说按10进制转换数字。还可以是2,8,16等等你喜欢的进制类型

  返回值:指向num这个字符串的指针

编辑本段程序例

  程序例:

  #include <stdlib.h>

  #include <stdio.h>

  int main(void)

  {

  int number = 12345;

  char string[25];

  itoa(number, string, 10);

  printf("integer = %d string = %s\n", number, string);

  return 0;

  }

  char *itoa(int value,char *string,int radix)

  将整数value转换成字符串存入string,

  radix为转换时所用基数(保存到字符串中的数据的进制基数)

注意事项:?

  itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制...

  itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。

  是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:

  char str[255];

  sprintf(str, "%x", 100); //将100转为16进制表示的字符串。

  下列函数可以将整数转换为字符串:

编辑本段数字转化为字符串函数名 及 功能

  itoa() 将整型值转换为字符串

  litoa() 将长整型值转换为字符串

  ultoa() 将无符号长整型值转换为字符串

 

3.string char

string str = "abcd";

char *ch = str.c_str();

4. char string

   char *cstr = "Hello";

   string str1;

   cstr = cstr;

   string str2(cstr);

5.拷贝

   a=b;

6. 字符串长度

   len = str.length();

   len = str.size();

7. 字符串比较

   直接比较 >   >=   <   <=   ==   !=

   str1.compare(str2);

   str1.compare(pos1,len1,str2,pos2,len2); 值为负,0 ,正。nops 长度到完。

8. 附加

   str1 += str2;

9. 字符串提取

    str2 = str1.substr(pos1,len1);

10. 字符串搜索

   where = str1.find(str2);

   where = str1.find(str2,pos1); pos1是从str1的第几位开始。

   where = str1.rfind(str2); 从后往前搜。

11. 插入字符串

   str1.insert(pos1,str2);

   str1.insert(pos1,str2,pos2,len2);

   str1.insert(pos1,numchar,char);    numchar是插入次数,char是要插入的字符。

12. 替换字符串

   str1.replace(pos1,str2);

   str1.replace(pos1,str2,pos2,len2);

13. 删除字符串

   str.erase(pos,len)

   str.clear();

14. 交换字符串

   swap(str1,str2);

#include<algorithm> 

main()

{

      int n;

      cin>>n;

      string a[999]={""};//字符串数组,多个字符串

      for(int i=0;i<=n-1;i++)

  cin>>a[i];

      sort(a,a+n);//排序,数组名,数组长度

      for(int i=n-1;i>=0;i--) cout<<a[i];

      system("pause");

}

#include<iostream>

using namespace std;

#include<string>         

main()

{

      string x;    int n,i=0;  

      cin>>x>>n;

      while(n!=0)

      if(x[i]>x[i+1])

      {x.erase(i--,1);n--;}//从字符串中删除一个元素

      else i++;               

      cout<<x;

      system("pause");

}

#include<iostream>

using namespace std;

int main(){

    

     string str = "12345";

          cout << atoi(str.c_str())<<endl;   //串转换成数       

    system("pause");

}

char处理:

函数名: strcat

功能: 字符串拼接函数

用法: char *strcat(char *destin, char *source);

 

函数名: strchr

功能: 在一个串中查找给定字符的第一个匹配之处\

用法: char *strchr(char *str, char c);

 

函数名: strcmp

功能: 串比较

用法: int strcmp(char *str1, char *str2);

Asic码,str1>str2,返回值 > 0;两串相等,返回0

 

函数名: strncmpi

功能: 将一个串中的一部分与另一个串比较, 不管大小写

用法: int strncmpi(char *str1, char *str2, unsigned maxlen);

 

函数名: strcpy

功能: 串拷贝

用法: char *strcpy(char *str1, char *str2);

 

函数名: strcspn

功能: 在串中查找第一个给定字符集内容的段

用法: int strcspn(char *str1, char *str2);

 

函数名: strdup

功能: 将串拷贝到新建的位置处

用法: char *strdup(char *str);

 

函数名: stricmp

功能: 以大小写不敏感方式比较两个串

用法: int stricmp(char *str1, char *str2);

 

函数名: strerror

功能: 返回指向错误信息字符串的指针

用法: char *strerror(int errnum);

 

函数名: strcmpi

功能: 将一个串与另一个比较, 不管大小写

用法: int strcmpi(char *str1, char *str2);

 

函数名: strncmp

功能: 串比较

用法: int strncmp(char *str1, char *str2, int maxlen);

 

函数名: strncmpi

功能: 把串中的一部分与另一串中的一部分比较, 不管大小写

用法: int strncmpi(char *str1, char *str2);

 

函数名: strncpy

功能: 串拷贝

用法: char *strncpy(char *destin, char *source, int maxlen);

 

函数名: strnicmp

功能: 不注重大小写地比较两个串

用法: int strnicmp(char *str1, char *str2, unsigned maxlen);

 

函数名: strnset

功能: 将一个串中的所有字符都设为指定字符

用法: char *strnset(char *str, char ch, unsigned n);

 

函数名: strpbrk

功能: 在串中查找给定字符集中的字符

用法: char *strpbrk(char *str1, char *str2);

 

函数名: strrchr

功能: 在串中查找指定字符的最后一个出现

用法: char *strrchr(char *str, char c);

 

函数名: strrev

功能: 串倒转

用法: char *strrev(char *str);

 

函数名: strset

功能: 将一个串中的所有字符都设为指定字符

用法: char *strset(char *str, char c);

 

函数名: strspn

功能: 在串中查找指定字符集的子集的第一次出现

用法: int strspn(char *str1, char *str2);

 

函数名: strstr

功能: 在串中查找指定字符串的第一次出现

用法: char *strstr(char *str1, char *str2);

 

函数名: strtod

功能: 将字符串转换为double型值

用法: double strtod(char *str, char **endptr);

 

函数名: strtok

功能: 查找由在第二个串中指定的分界符分隔开的单词

用法: char *strtok(char *str1, char *str2);

 

函数名: strtol

功能: 将串转换为长整数

用法: long strtol(char *str, char **endptr, int base);

 

函数名: strupr

功能: 将串中的小写字母转换为大写字母

用法: char *strupr(char *str);

 

函数名: swab

功能: 交换字节

用法: void swab (char *from, char *to, int nbytes);

string其他:

char* strspnp( const char* str, const char* chrset );

 

C++string类常用算法

string类的构造函数:

 

string(const char *s);    //c字符串s初始化

string(int n,char c);     //n个字符c初始化

此外,string类还支持默认构造函数和复制构造函数,如string s1string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常

string类的字符操作:

const char &operator[](int n)const;

const char &at(int n)const;

char &operator[](int n);

char &at(int n);

operator[]at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。

const char *data()const;//返回一个非null终止的c字符数组

const char *c_str()const;//返回一个以null终止的c字符串

int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

string的特性描述:

int capacity()const;    //返回当前容量(即string中不必增加内存即可存放的元素个数)

int max_size()const;    //返回string对象中可存放的最大字符串的长度

int size()const;        //返回当前字符串的大小

int length()const;       //返回当前字符串的长度

bool empty()const;        //当前字符串是否为空

void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分string类的输入输出操作:

string类重载运算符operator>>  //用于输入,同样重载运算符operator<<用于输出操作。

函数getline(istream &in,string &s);//用于从输入流in中读取字符串到s中,以换行符'\n'分开。

string的赋值:

string &operator=(const string &s);//把字符串s赋给当前字符串

string &assign(const char *s);//c类型字符串s赋值

string &assign(const char *s,int n);//c字符串s开始的n个字符赋值

string &assign(const string &s);//把字符串s赋给当前字符串

string &assign(int n,char c);//n个字符c赋值给当前字符串

string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符串

string &assign(const_iterator first,const_itertor last);//firstlast迭代器之间的部分赋给字符串

string的连接:

string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾

string &append(const char *s);   //c类型字符串s连接到当前字符串结尾

string &append(const char *s,int n);//c类型字符串s的前n个字符连接到当前字符串结尾

string &append(const string &s);    //operator+=()

string &append(const string &s,int pos,int n); //把字符串s中从pos开始的n个字符连接到当前字符串的结尾

string &append(int n,char c);        //在当前字符串结尾添加n个字符c

string &append(const_iterator first,const_iterator last);//把迭代器firstlast之间的部分连接到当前字符串的结尾

string的比较:

bool perator==(const string &s1,const string &s2)const;//比较两个字符串是否相等

运算符">","<",">=","<=","!="均被重载用于字符串的比较;

int compare(const string &s) const;//比较当前字符串和s的大小

int compare(int pos, int n,const string &s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小

int compare(int pos, int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与spos2开始的n2个字符组成的字符串的大小

int compare(const char *s) const;

int compare(int pos, int n,const char *s) const;

int compare(int pos, int n,const char *s, int pos2) const;

compare函数在>时返回1<时返回-1==时返回

string的子串:

string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串string的交换:

void swap(string &s2);    //交换当前字符串与s2的值

string类的查找函数:

int find(char c, int pos = 0) const;//pos开始查找字符c在当前字符串的位置

int find(const char *s, int pos = 0) const;//pos开始查找字符串s在当前串中的位置

int find(const char *s, int pos, int n) const;//pos开始查找字符串s中前n个字符在当前串中的位置

int find(const string &s, int pos = 0) const;//pos开始查找字符串s在当前串中的位置

//查找成功时返回所在位置,失败返回string::npos的值

int rfind(char c, int pos = npos) const;//pos开始从后向前查找字符c在当前串中的位置

int rfind(const char *s, int pos = npos) const;

int rfind(const char *s, int pos, int n = npos) const;

int rfind(const string &s,int pos = npos) const;

//pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值

int find_first_of(char c, int pos = 0) const;//pos开始查找字符c第一次出现的位置

int find_first_of(const char *s, int pos = 0) const;

int find_first_of(const char *s, int pos, int n) const;

int find_first_of(const string &s,int pos = 0) const;

//pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回

string::npos

int find_first_not_of(char c, int pos = 0) const;

int find_first_not_of(const char *s, int pos = 0) const;

int find_first_not_of(const char *s, int pos,int n) const;

int find_first_not_of(const string &s,int pos = 0) const;

//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos

int find_last_of(char c, int pos = npos) const;

int find_last_of(const char *s, int pos = npos) const;

int find_last_of(const char *s, int pos, int n = npos) const;

int find_last_of(const string &s,int pos = npos) const;

int find_last_not_of(char c, int pos = npos) const;

int find_last_not_of(const char *s, int pos = npos) const;

int find_last_not_of(const char *s, int pos,  int n) const;

int find_last_not_of(const string &s,int pos = npos) const;

//find_last_offind_last_not_offind_first_offind_first_not_of相似,只不过是从后向前查找

string类的替换函数:

 

string &replace(int p0, int n0,const char *s);//删除从p0开始的n0个字符,然后在p0处插入串s

 

string &replace(int p0, int n0,const char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符

 

string &replace(int p0, int n0,const string &s);//删除从p0开始的n0个字符,然后在p0处插入串s

 

string &replace(int p0, int n0,const string &s, int pos, int n);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符

 

string &replace(int p0, int n0,int n, char c);//删除p0开始的n0个字符,然后在p0处插入n个字符c

 

string &replace(iterator first0, iterator last0,const char *s);//[first0last0)之间的部分替换为字符串s

 

string &replace(iterator first0, iterator last0,const char *s, int n);//[first0last0)之间的部分替换为s的前n个字符

 

string &replace(iterator first0, iterator last0,const string &s);//[first0last0)之间的部分替换为串s

 

string &replace(iterator first0, iterator last0,int n, char c);//[first0last0)之间的部分替换为n个字符c

 

string &replace(iterator first0, iterator last0,const_iterator first, const_iteratorlast);//[first0last0)之间的部分替换成[firstlast)之间的字符串string类的插入函:

 

string &insert(int p0, const char *s);

 

string &insert(int p0, const char *s, int n);

 

string &insert(int p0,const string &s);

 

string &insert(int p0,const string &s, int pos, int n);

 

//4个函数在p0位置插入字符串spos开始的前n个字符

 

string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c

 

iterator insert(iterator it, char c);//it处插入字符c,返回插入后迭代器的位置

 

void insert(iterator it, const_iterator first, const_iterator last);//it处插入[firstlast)之间的字符

 

void insert(iterator it, int n, char c);//it处插入n个字符c

 

 

 

string类的删除函数

 

iterator erase(iterator first, iterator last);//删除[firstlast)之间的所有字符,返回删除后迭代器的位置

 

iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置

 

string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

 

 

 

string类的迭代器处理:

 

string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。

 

string::iteratorstring::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:

 

const_iterator begin()const;

 

iterator begin();                //返回string的起始位置

 

const_iterator end()const;

 

iterator end();                    //返回string的最后一个字符后面的位置

 

const_iterator rbegin()const;

 

iterator rbegin();                //返回string的最后一个字符的位置

 

const_iterator rend()const;

 

iterator rend();                    //返回string第一个字符位置的前面rbeginrend用于从后向前的迭代访问,通过设置迭代器

 

string::reverse_iterator,string::const_reverse_iterator实现

 

 

 

字符串流处理:

 

通过定义ostringstreamistringstream变量实现,<sstream>头文件中

 

例如:

 

    string input("hello,this is a test");

 

    istringstream is(input);

 

    string s1,s2,s3,s4;

 

    is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"

 

    ostringstream os;

 

    os<<s1<<s2<<s3<<s4;

 

    cout<<os.str();

2018-03-09 16:12:20 weixin_39089680 阅读数 78

20180302 C++字符串的处理

转载: http://blog.csdn.net/fenxinzi557/article/details/51457829

2015-09-13 19:02:43 ACM_TH 阅读数 565

char数组的处理

C++给予了我们强大的重载符 cin >> 和 cout <<
但是还是会出现一些小问题
先来看这个问题
输入一个字符串
1.abc qwe
输出这个字符串

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main () {
    const int ArSize = 20;
    char name[ArSize];

    cin >> name;
    cout << name << endl;

    return 0;
} 

运行结果:
这里写图片描述

很显然 当遇到空格的时候 就出现问题了
因为cin会把空格和制表符、换行符作为结束位置
那么我们可以这样来写

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main () {
    const int ArSize = 20;
    char name[ArSize];

    cin.getline(name, ArSize);
    cout << name << endl;

    return 0;
} 

运行结果:
这里写图片描述

好了 这个OK


string的处理

string是一个非常好处理的类,那么cin在处理这个问题时 也会这样

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main () {
    string str;

    cin >> str;
    cout << str << endl;

    return 0;
} 

运行结果:
这里写图片描述

改改

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main () {
    string str;

    getline(cin, str);
    cout << str << endl;

    return 0;
} 

运行结果:
这里写图片描述


2017-02-21 00:49:00 weixin_34265814 阅读数 8

刚学C++那会,真的是对字符串头痛了好久,就是后面自己一不小心还是容易在字符串上犯错误,自己觉得这里就是一个大坑,在看完了c++ primer对于字符串的描述之后感觉自己对于字符串已经没有那种遥不可及的神秘感了,所以还是C++primer大法好。言归正传,该介绍一下字符串的内容了。

1.字符串

字符作为一种基本的数据类型,但是实际中确实字符串用的更多,但比较坑爹的就是C++中是没有专门为字符串写一个基本的数据类型的。但是C++对此的不久也是不少的,比如C++是有一个C-style string的说法的,和字符数组有一点不一样的。

char arr1[11] = "HelloWorld"
char arr2[10]={'H','e','l','l','W','o','r','l','d'};//not a string 
char arr3[11]={'H','e','l','l','W','o','r','l','d','\0'};//the same string as arr1.

我记得很清楚的一句话说明了数组和字符串的区别就是(自己的理解,不是原话)

当你把一个数组传给函数的时候,你只给一个 数组名是不够的(也就四数组的地址)因为你不知道数组的长度,你是不能够放心的对数组进行操作的,所以往往还要传一个数组长度的整数,但是对于一个string来说就不同了,传一个名字就能够获取这个string的信息,因为C++规定了string的结尾都是'\0',所以函数操作string不需要他的长度,只需要通过'\0'来控制


而对于数组的操作肯定就少不了相应指针的帮忙,所以就有了字符指针
char *p1 = arr;//一开始还会觉得奇怪数组名是指针,但是后面学的越多,就觉得没什么了,甚至还有点巧妙
重点来了,就是对于指针的运算,开始的时候真的让人头昏

using namespace std;
int main()
{
     char arr1[12] = "HelloWorld";
     char *p1 = arr;
     cout<<*p1<<endl;
     p1++;
     cout<<*p1<<"at"<<p1<<endl;
     char **p2 = &arr;
     p2++;
     cout<<*p2<<"at"<<p2<<endl;//dangerous
}

输出的结果可能会让你觉得神奇(如果你以前没学过的话)
对于&符号作用于一个数组名,其实是一种指向指针的指针。
对于这个问题,C++primer作了一个比较好的解释,就是*是相当于把一个指针降低了一个等级,而&取址符相当于把指针升了一个等级。例如题中p1=&arr;把p1定义为一个指向整个数组的一个指针对象,而之前的p1=arr;是把p1定义为一个指向数组元素的指针对象。对应++号跳过指针指向的一个最小指向对象。


2.字符串输出

c++中对于字符数组的输出仿佛是别有用心。一开始的时候都会感觉有点奇怪。

char word[] = "helloworld";
char *p1 = word;
cout<<word<<endl;
cout<<*p1<<endl;
cout<<p1<<endl;

结果是

helloworld
helloworld

转载于:https://www.jianshu.com/p/fde486fbf5da

2014-11-17 19:34:11 mydipan396 阅读数 381

1、char 与 std::string 之间的转化

       使用_sntprintf 与 strcopy实现

        char myStr1[20] = "abcdefghijklmn";

        std::string myStr2;

        _sntprintf((char *)(myStr2.c_str()), sizeof(myStr1), myStr1);

        

        std::string myStr1 = "abcdefghijklmn";

        char myStr2[20];

        _sntprintf(myStr2, sizeof(myStr2), myStr1.c_str());


       以上是使用_sntprintf实现,strcopy也可类似这样使用。


2、strprintf:格式化字符串返回std::string

      std::string  strprintf(char const * format, ...)

      {

              char buf[256];

              va_list(args);

              va_start(args, format);

              int nb = _vsnprintf(buf, 256, format, args);

              va_end(args);

              if(nb<256)

                    return buf;

               ++nb;

               char *buf2 = new char[nb];

               va_start(args, format);

               _vsnprintf(buf2, nb, format, args);

               va_end(args);

               std::string res(buf2);

               delete [] buf2;

               return res;

       }


       使用方法:strprintf("图片%d",imageId);  


3、tostring:把任意类型值转成std::string

      template<typename T> std::string toString(const T &arg)

      {

              std::stringstream ss;

              ss << arg;

              return ss.str();

      }

       

4、string 转 UTF8

       std::string toUTF8(const std::string &s)

       {

                 USES_CONVERSION;

                 std::wstring ws = A2W(s.c_str());

                  vector<char> utf8Str(ws.size()*3 + 1, 0);

                 WideCharToMultiByte(CP_UTF8, 0, ws.c_str(), ws.size(), &utf8Str[0], utf8Str.size(), NULL, NULL);

                 return &utf8Str[0];

       }


5、ip地址长整数转化为字符串

      const char  * ipToString(int address)

      {

              static char asciiIp[16];

              sprintf(asciiIp, "%i,%i,%i,%i",

                         (unsigned char)(address >> 24),

                         (unsigned char)((address&0x00ffffff) >> 16),

                         (unsigned char)((address&0x0000ffff) >> 8),

                         (unsigned char)(address&0x000000ff));

        

               return  asciiIp;

      }    


      使用:10.0.3.193转化为整数为167773121

                  ipToString(167773121) 返回 10.0.3.193


6、分割字符串,保存到容器栈中

      bool  stringSplit(const std::string&  srcStr, const  std::string& splitStr, std::vector<std::string>& destVec)

      {

             if(srcStr.size() == 0)

                  return false;

             

             size_t  oldPos  =  0;

             size_t  newPos  =  0;

             std::string  tempData;


              while(true)

              {

                     newPos = srcStr.find(splitStr, oldPos);

                     if(newPos  !=  std::string::npos)

                     {

                           tempData = srcStr.substr(oldPos, newPos - oldPos);

                           destVec.push_back(tempData);

                           oldPos = newPos + splitStr.size();

                     }

                     else if(oldPos <  srcStr.size())

                     {

                            tempData = srcStr.substr(oldPos);

                            destVec.push_back(tempData);

                            break;

                     }

                     else

                             break;

              }

              return true;

      }


       例:字符串“C++,PHP,Java,Python”,调用函数可以把逐个字符串存入容器栈中。


7、去掉字符串中前后的空格字符

      std::string  &trim(std::string &str)
      {
              std::string::size_type pos = str.find_last_not_of(' ');
              if(pos != std::string::npos)
              {
                      str.erase(pos + 1);
              pos = str.find_first_not_of(' ');
  
              if(pos != std::string::npos)
              str.erase(0, pos);
               }
               else
               {
                       str.clear();
                }
                return str;
       }


8、字符串中字母的大小写转换

       std::string &toLower(std::string &str)        //转小写
       {
            std::transform(str.begin, str.end(), str.begin(), tolower);
     return str;
        }


        std::string &toUpper(std::string &str)       //转大写
        {
              std::transform(str.begin, str.end(), str.begin(), toupper);
      return str;    
         }

          

           补充一个字符串处理宏,可以很方便进行字符串的格式化:

        #define MAKESTR(s)   ((std::ostringstream&)(std::ostringstream()<<std::string()<<s)).str().c_str()

        例:  std::string  mStr = MAKESTR("abcd"<<21<<"love");

C++路径中的斜杠"\"在字符串中怎么处理

阅读数 178

在C++中,斜杠"\"表示转义字符,所以以字符串表示路径时,不能使用斜杠"\",而应该使用双斜杠"\\",前一个斜杠将后一个转义为"\"。

博文 来自: zidian666

C++ 字符串各种处理

阅读数 741

内容简要:1、创建常量字符串。 2、创建空字符串,给予赋值。3、在以上方法中,提升速度:initWithString方法 4、用标准c创建字符串:initWithCString方法。5、创建格式化字符串:占位符(由一个%加一个字符组成) 6、创建临时字符串。7、判断字符串为空。9、是否以”test”开头;是否以”.move”结尾。10、比较两个字符串。

博文 来自: dingkun520wy

c++笔记本之“字符串”处理

阅读数 845

c++处理字符串的方式有两种:1)来自c语言,即c风格字符串。2)基于string类库。#c-风格字符串c-风格字符串具有一种特殊的性质:

博文 来自: qianxin_dh

C++字符串相加处理

阅读数 6699

这是《AcceleratedC++》一书的第一章的课后题-下面的编译是否有问题?1:conststd::stringhello=“Hello”;conststd::stringmessage=hello+“,world”+“!”;2:conststd::stringexclam=“!”;conststd::stringmessage=“Hell

博文 来自: a491057947

c++ string 处理字符串

阅读数 164

查找   变量名.find(字符,开始位置);

博文 来自: qq_20434797
没有更多推荐了,返回首页