C++字符串处理

atoi()函数:将字符串转换成int(整数)

头文件:#include

#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int i;
    char buffer[256];
    printf ("Enter a number: ");
    fgets (buffer, 256, stdin);
    i = atoi (buffer);
    printf ("The value entered is %d.", i);
    system("pause");
    return 0;
}

执行结果:
Enter a number: 233cyuyan
The value entered is 233.

isdigit()函数

头文件:#include < string >

isdigit()函数:判断字符型是否是数字

#include <iostream>  
#include <cstdio>  

using namespace std;  

int main() 
{  
    char c;//此时输入的是整型数字  
    while (cin>>c) {  
        if (isdigit(c)) {  
            cout<<c<<"是数字"<<endl;  
        } else cout<<c<<"不是数字"<<endl;  
    }  
    return 0;  
}  

执行结果:
/*
1
1是数字
2
2是数字
3
3是数字
a
a不是数字
b
b不是数字
c
c不是数字
*/
//识别正确
//但是如果把char c 改成int c 则无法识别数字和字符的区别

substr函数的用法

头文件:#include < string >

一种构造string 的方法
形式:s.substr(pos,n)
解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos默认值是0,n的默认值是s.size()-pos,即不加参数会默认拷贝整个s)
若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了 string的大小,则substr会调整n的值,只拷贝到string 的末尾。

#include<string>
#include<iostream>
using namespace std;
int main()
{
  string s("12345asdf");
  string a = s.substr(0,5);     //获得字符串s中从第0位开始的长度为5的字符串
  cout << a << endl;
}

执行结果:
12345

C_str()函数用法

头文件:#include < string >

函数原型:const char *c_str();

函数说明:返回一个指向正规c字符串的指针常量,内容与本string串相同
这是为了和C语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。

注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s=”1234”;
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理,同时,编译器也将报错——将一个const char 赋与一个char

应该这样用:
char c[20];
string s=”1234”;
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作

再举个例子
c_str() 以 char* 形式传回 string 内含字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = “Hello World!”;
printf(“%s”, s.c_str()); //输出 “Hello World!”

猜你喜欢

转载自blog.csdn.net/violethan7/article/details/79985862