============
怎么处理一行空格中的逗号,
,,,
,,,
,,,
c,c,d,d
使用c++的方法,可以这么处理:
#include <sstream>
#include<algorithm>
using namespace std;
将数据放入string dataline中,
replace(dataline.begin,dataline.end(),',',' ');
istringstream myInstream(dataline);
while(myInstream>>v){
cout<<v<<" ";
}cout<<endl;
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
//#include "xiaozhao.h"
#include <sstream> using namespace std; int main()
{
//Cxiao c;
//c.test();
freopen("input.txt","r",stdin);
int N;
int v;
string dataline;
cin>>N;
for(int i = ;i<=N;i++){
getline(cin,dataline);
replace(dataline.begin(),dataline.end(),',',' ');
istringstream myInstream(dataline);
while(myInstream>>v){
cout<<v<<" ";
}cout<<endl;
}
return ;
}
=============
在c中,常用的处理输入的函数有:scanf(),getchar(),gets();
在c++中,常用的处理输入输出的函数有:cin,getline
=======
#1知道输入数据组数n
scanf("%d",&n)
while(n--){
这里处理每一组输入,然后直接按照格式输入,没有必要开数组存储答案;
}
#2没有数据总数,以EOF结束
scanf();
while(scanf("%s|%d")!=EOF){
处理每一组数据,并输出
}
1 2 3
4 5 6
#include <iostream>
#include <stdio.h>
//#include "xiaozhao.h"
using namespace std;
int main()
{
//Cxiao c;
//c.test();
freopen("input.txt","r",stdin);
int N;
scanf("%d",&N);
while(N--){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d%d%d\n",a,b,c);
}
return ;
}
2,没有数据总数,以EOF结尾
1 2 3
4 5 6
#include <iostream>
#include <stdio.h>
//#include "xiaozhao.h"
using namespace std;
int main()
{
//Cxiao c;
//c.test();
freopen("input.txt","r",stdin);
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF){
printf("%d%d%d\n",a,b,c);
}
return ;
}
--getchar()读入一个字符
while((ch=getchar())!=EOF){
}
--gets读入一行
while(gets(buf)!=NULL){
}
3,以0或-1结束的输入
while(scanf("%d",&n),n!=0){
}
1,2,3
4,5,6
-1
#include <iostream>
#include <stdio.h>
//#include "xiaozhao.h"
using namespace std;
int main()
{
//Cxiao c;
//c.test();
freopen("input.txt","r",stdin);
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c) && (a!=- && b!=- && c!=-)){
printf("%d%d%d\n",a,b,c);
}
return ;
}
============
getchar()和scanf(%c)的功能是一样的,都是接受从键盘输入一个字符;
需要注意的是,这两个函数读入的是输入流中当前位置的字符,比如:
scanf("%d",&n);
c = getchar();//
67/ (/表示换行),则n=67,c = /
===
同样gets和scanf(%s)类似
scanf("%s")在读入字符串时遇到空格或者回车是就会结束
get可以读入一样包含空格的字符串,遇到回车结束(不能读取回车);
=================
cin 读取字符串时,遇到空白符(空格,换行等)结束
===
char str[BUFFER];
while(cin>>str){}
===
getline读字符串时遇到换行符结束,用于读取一整行
char str[BUFFER];
while(cin.getline(str,BUFFER)){}
===
string str;
while(getline(cin,str)){}