东方Project相关试题(Easy)(P7869 「Wdoi-4」使用三个系统程度的能力)(字符串处理)

该博客主要探讨了一种字符串处理的编程问题,涉及C++语言中的getline和fgets函数,以及如何根据字符串中的特殊字符判断操作系统类型。通过分析输入文本中的换行符(包括 和 )的出现情况,程序可以识别出Windows、Linux或Mac操作系统。
摘要由CSDN通过智能技术生成

题意:(附带链接)

输入共一行,为转换后的文本文件。保证文本文件非空,且转换前至少有一个换行符。输入可能包含空格。

数据范围:

  • 对于40% 的数据,保证不存在空格。
  • 对于100% 的数据,保证输入字符串的长度≤10^5。输入中仅包含大写英文字母、小写英文字母、下划线、数字、空格和转义字符(\r\n)。

样例:

输入 #1

SCP2021RPplusplus\nchenzheAKIOI\n1plus1equalto2\n

输出 #1

linux

思路:

不难发现这题就是考察对字符串的处理,难度也只是入门难度

①:那么只需要使用getline 函数读入整行字符串,然后使用find 函数查询里面是否含有即可。要注意的是,如果find函数没能查找到某个需要匹配的字符串,返回值是 ULLONG_MAX。

②:fgets(数组名,最大长度,stdin);因为gets在c++11后就无了,得学会使用fgets函数

代码

#include<bits/stdc++.h>

using namespace std;

const int maxn=1e5+1000;
char ss[maxn];
int main()
{
    string s1,s2;
    int n,i,j,t;
//    fgets(ss,maxn,stdin);
    getline(cin,s1);
    cout<<ss<<" "<<s1<<endl;
    int d1=s1.length()-1,f1=1;
    for(i=0;i<d1+1;i++)
    {
        if(s1[i]=='\\'&&s1[i+1]=='r'&&s1[i+2]=='\\'&&s1[i+3]=='n'&&f1<4)
            f1=4;
        else if(s1[i]=='\\'&&s1[i+1]=='n'&&f1<3)
            f1=3;
        else if(s1[i]=='\\'&&s1[i+1]=='r'&&f1<2)
            f1=2;
    }
    if(f1==4)
    {
        cout<<"windows"<<endl;
    }
    else if(f1==3)
    {
        cout<<"linux"<<endl;
    }
    else
    {
        cout<<"mac"<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值