关于输入带空格的一行的问题

以下给出三种方法:

  • EOF
    注意这种方法在clion上测试不出来,,但是在oj上跑是没有问题的
  • cin.getline(s,len)
  • getchar()
#include<iostream>
#include<vector>
#include <queue>
#include <algorithm>
#include<cstdio>
#include <map>
using namespace std;
//还是要注意一点就是string中的每一位都是char类型,搞数字的时候要  -'0'

    //测试题:B1009说反话
    /*
    char a[100][100];
    int i=0;
    while(scanf("%s",a[i])!=EOF){
        i++;
    }
    for (int j = i-1; j >= 0; --j) {
        printf("%s",a[j]);
        if(j>0)
            printf(" ");

    }
    */
/*
    //直接读一行:包括空格

    //input:2 3 4
    //output:2 3 4
    char s[100];
    cin.getline(s,1000);
    printf("%s",s);
*/

    //跟上一个一样
    /*
    char s[100];
    int len=0;
    while(1){
        s[len++]=getchar();
        if(s[len-1]=='\n')
            break;
    }
    for (int i = 0; i < len; ++i) {
        cout<<s[i];

    }
*/
    //测试题目:A1050

    //题目明确说了有空格,那就不要EOF了,因为它就是用空格分隔的

char s1[100000], s2[100000];
map<char,int> flag;
int main() {
    cin.getline(s1, 100000);
    cin.getline(s2, 100000);
    int lens1 = strlen(s1), lens2 = strlen(s2);

    for(int i = 0; i < lens2; i++)
        flag[s2[i]] = 1;
    for(int i = 0; i < lens1; i++) {
        if(!flag[s1[i]])
            printf("%c", s1[i]);
    }
    return 0;

}

posted @ 2021-07-25 16:51  安之若醇  阅读(54)  评论(0编辑  收藏  举报
Live2D服务支持