c++中处理输入输出的方法

============

怎么处理一行空格中的逗号,

4
1234
1234
123455
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)){}

原文地址:https://www.cnblogs.com/li-daphne/p/5866350.html