============
怎么处理一行空格中的逗号,
4 1,2,3,4 1,2,3,4 12,3,4,55 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 = 0;i<=N;i++){ getline(cin,dataline); replace(dataline.begin(),dataline.end(),',',' '); istringstream myInstream(dataline); while(myInstream>>v){ cout<<v<<" "; }cout<<endl; } return 0; }
=============
在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 ",a,b,c); } return 0; }
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 ",a,b,c); } return 0; }
--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!=-1 && b!=-1 && c!=-1)){ printf("%d%d%d ",a,b,c); } return 0; }
============
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)){}