数字字符串转换成算数类型函数atoi(),分解字符串的函数strtok()的简单应用

 

#include <stdio.h>
#include <string.h>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
string buff ="55.5 22 6688 99 55";
char *pp=NULL;
char *buf= (char*)buff.c_str();//string转换char*
//char *ptr = strtok(buf, " ");//分解字符串的函数 第一个参数为 char* 字符串buf首地址,第二个为分割符,这里为空格。  第一次调用输入char* 字符串buf首地址。
                             //返回第一次被分割的字符串首地址。

/*strtok(char* s,const char* delim);
简介
当strtok()在参数s的字符串中发现分割符参数delim中包含的分割字符时(这里为空格),则会将该字符改为\0 字符
返回值:
从s开头开始的一个个被分割的串的首地址。当s中的字符查找到末尾时,返回NULL。
如果查找不到delim中的字符时,返回当前strtok的字符串的指针。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。*/
char *ptr = strtok_s(buf, " ",&pp);//strtok_s功能和strtok一样,只是把每次剩余的字符串放入第三个参数(这里为pp里),更安全。
double a[5];
int i=0;
while(ptr)
{
	a[i]=atof(ptr);//数字字符串转换成double类型:double  //atoi()是数字字符串转换成int类型
	cout<<"origin : "<<a[i]<<endl;
	i++;
	ptr = strtok_s((char *)NULL, " ",&pp);//以后每次调用 ,第一个参数输入(char *)NULL,在strtok_s()函数执行到char* 字符串buf的最后,返回NULL,循环结束。
    //ptr = strtok((char *)NULL, " ");//以后每次调用 ,第一个参数输入(char *)NULL,在strtok()函数执行到char* 字符串buf的最后,返回NULL,循环结束。
}
for(int i=0;i<5;i++)

{
	
 cout<<"a[i]:"<<a[i]<<endl;
}
}


 

 

posted on 2016-07-13 20:08  从小白做起  阅读(181)  评论(0编辑  收藏  举报