c++关于字符串的操作(转化为整数,输入)

一、输入带空格的字符串

(1)gets(char *str)

         需要包含头文件#include

(2)scanf("%[^\n]]",str)

       需要包含头文件#include ,这种方法需要对正则表达式有一定的理解,例如:scanf("%[a-z A-Z 0-9]",str)表示只匹配输入是大小写字母和数字。

(3)getline(cin,string str)

       需要包含头文件#include ,因为getline是string类成员对象,例如string::getline,其中第一个参数要求是输入流对象的引用&istream.


为char*,在C++中string封装了字符串的操作,总结一下,把string转化为字符数组或指针有一下三种方式:

(a)c_str()

          string str="hi,girls!";
          char *p=str.c_str();

(b)data()

          string str="hello";
          char *p=str.data();

(c)copy(p,len,start)

        string str="howareyou";
         char pStr[40];
         str.copy(pStr,7,0);      //7代表复制几个字符,0代表复制的位置
         *(pStr+7)='\0';            //这里要手动加上结束符

(4)cin.getline(char *str, int maxnum)

       需要包含头文件#include ,因为这里的getline是输入流的成员对象,如:istream::getline.

二、将字符串转为数字

1、字符串转数字:使用sscanf()函数

char str[]="1234321";
int a;
sscanf(str,"%d",&a);
.............
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
.............
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16进制转换成10进制

2、利用一个循环将数字提取

三、其余字符串函数

s.empty()

Returns true if s is empty; otherwise returns false
如果 s 为空串,则返回 true,否则返回 false。

s.size()

Returns number of characters in s
返回 s 中字符的个数

s[n]

Returns the character at position n in s; positions start at 0.
返回 s 中位置为 n 的字符, 位置从 0 开始计数

tolower(c) 

If c is an uppercase letter, returns its lowercase equivalent; otherwise returns c unchanged.如果 c 大写字母,返回其小写字母形式,否则直接返回 c。

toupper(c)

If c is a lowercase letter, returns its uppercase equivalent; otherwise returns c unchanged.如果 c 是小写字母,则返回其大写字母形式,否则直接返回 c。

s.append(str_ca)

将str_ca添加到s的结尾,返回s;

s.append(ca, n)

将ca的前n个字符添加到s的结尾,返回s;

s.append(n, ch)

将ch的n份拷贝添加到s的结尾,返回s;

s.insert(pos, str)

将str的拷贝插入到s的pos位置,返回s;

s.insert(pos1, str, pos2, n)

将str中从pos2位置开始的n个字符插入到s的pos1位置,返回s;【如果n大于str的长度,不会有问题,没有溢出错误,只会复制到str的末尾】

s.insert(pos, ca, n)

将ca的前n个字符插入到s的pos位置,如果n被省略,则插入ca中所有的字符到pos位置,返回s;

s.insert(pos, n, ch)

将字符ch的n个拷贝插入到s的pos位置,返回s;

s.erase(pos, n)

删除s中从pos开始的n个字符(默认pos为0),返回s;

s.replace(pos1, n1, str)

将s中pos1位置开始的长度为n1的字符串替换为str【如果n1太大,从pos到s结尾的所有字符将被替换】,返回s;

s.replace(pos1, n1, ca, n2)

和上面一样,只不过取ca的前n2个字符,返回s;

s.swap(str)/swap(s, str)

交换s和str的内容分,返回为void;

s.find(str_ca_ch, pos)

返回s中第一个大于等于pos的位置,并且从这个位置的下一个字符开始s中字符和str_ca_ch中相应字符匹配。如果没有这样的位置则返回npos,pos默认为0

对网上字符串操作的总结感谢原文作者

取自http://blog.csdn.net/zhanh1218/article/details/33306481

http://blog.csdn.net/zhouwei1221q/article/details/44887899


你可能感兴趣的:(总结)