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();

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-21

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;
}

第2个回答  2014-10-16
这个用一个指针在字符串内走一下,做一个比较就搞定了,就是一个循环问题
 
#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';  
}

本回答被网友采纳
第3个回答  2017-07-30
给你推荐一个函数:strtok
第4个回答  2014-10-16
嗯,可以追问

就是用scanf输入一行“1,2,3,4"把这四个数据存到数组该怎么写

追答

要加地址符的

相似回答