zoukankan      html  css  js  c++  java
  • 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)){}

  • 相关阅读:
    mysql 取出每科成绩前两名
    mysql 数据库以及sql 的优化
    Twitter开源分布式自增ID算法snowflake
    SVN 冲突
    VUE 入门 1 列表、if判断 、双向绑定
    Roadblock
    最大子序和
    SOLDIERS
    绿豆蛙的归宿
    Place the Robots
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5866350.html
Copyright © 2011-2022 走看看