C语言以逗号分割字符串
#include<iostream>
#include<vector>
#include<sstream>
usingnamespacestd;
intmain()
{
strings;
vector<int>v;
cin>>s;
//将读入的字符串转化成is流
istringstreamis(s);
intinter;
charch;
while(is>>inter)//只能读出is流中的一个整形读进inter
{
v.push_back(inter);
is>>ch;//然后读一个字符型读进ch
}
for(inti=0;i<v.size();i++)
cout<<v[i]<<"";
cout<<endl;
return0;
}
扩展资料
C语言的字符串按照指定字符串分割操作
#include<stdio.h>
#pragmawarning(disable:4996)
#include<stdlib.h>
intmain()
{
charstr[]="我,是,中国,程序员";
char*ptr;
char*p;
printf("开始前:str=%s\n",str);
printf("开始分割:\n");
ptr=strtok(str,",");
while(ptr!=NULL){
printf("ptr=%s\n",ptr);
ptr=strtok(NULL,",");
}
getchar();
}
C语言中要分割以逗号分隔的各个子串可以使用strtok()函数,函数原型:
char* strtok (char* str,constchar* delimiters );
函数功能:
切割字符串,将str切分成一个个子串
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)。
函数返回值:
当s中的字符查找到末尾时,返回NULL;
如果查不到delimiter所标示的字符,则返回当前strtok的字符串的指针。
参考代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char test_str[] = "this,is,a,,,test";
char *ptr,*retptr;
int i=0;
ptr = test_str;
while ((retptr=strtok(ptr, ",")) != NULL) {
printf("substr[%d]:%s\n", i++, retptr);
ptr = NULL;
}
return 0;
}
运行结果:
注意,strtok()函数非线程安全函数,在多线程环境下可以使用strtok_r()代替,函数原型:
char *strtok_r(char *str, const char *delim, char **saveptr);
使用方法类似,只需要多定义一个字符指针,在每次调用前作为参数传递其地址即可,参考代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char test_str[] = "this,is,a,,,test";
char *ptr,*retptr,*savestr;
int i=0;
ptr = test_str;
while ((retptr=strtok(ptr, ",", &savestr)) != NULL) {
printf("substr[%d]:%s\n", i++, retptr);
ptr = NULL;
}
return 0;
}
这个用一个指针在字符串内走一下,做一个比较就搞定了,就是一个循环问题
#include <stdio.h>
void getstring(char *);
int main(void)
{
char test[100];
getstring(test);
return 0;
}
void getstring(char *test)
{
int count = 0;
while((test[count] = getchar()) != ',' && test[count] != '\n')
++count;
test[count] = '\0';
}
就是用scanf输入一行“1,2,3,4"把这四个数据存到数组该怎么写
要加地址符的