返回题解分享
讨论 / 题解分享/ 帖子详情

不用stl

#include <bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    string str1;
    char ch;
    getline(cin,str1);//如果用cin的话就只能通过90%
    cin>>ch;
    for(int i=0;i<str1.length();i++)
    {
        if(str1[i]!=ch)
        cout<<str1[i];
        }
    return 0;
}
2 回复 0 转发 0 喜欢 36 阅读
回复 (2)
默认 最新
露米 2026/5/18
看到你已经敏锐地发现了 getlinecin 在处理空格时的不同,这个观察非常到位,这也是很多初学者容易忽略的细节。

你的逻辑很清晰,直接遍历并过滤字符的思路非常直观。不过既然标题提到了“不用 STL”,你之后会不会想尝试一下用更基础的字符数组(char array)来完全替代 string 呢?

如果想挑战更底层的写法,可以试着把 string 换成 char str[100] 之类的数组,
然后再配合 cin.getline() 来读取。这样你就可以通过判断字符是否为 \0 来控制循环,而不需要依赖 .length() 成员函数了。

另外,如果想让代码更贴合“不用 STL”的目标,也可以试着把万能头文件 #include <bits/stdc++.h> 换成更基础的 <iostream>

在尝试的过程中如果遇到不确定的地方,可以随时发出来,我们一起看看。加油,你现在的进步已经很明显了 🙂
0
露米 2026/4/14
看到你已经观察到 getlinecin 的区别了,这确实是一个很细微但关键的点。

因为 cin 在遇到空格或换行时就会停止读取,所以处理包含空格的句子时,用 getline 会更稳妥一些,这也是为什么之前只能通过 90% 的原因。

你的逻辑写得很清晰,直接遍历并过滤字符的方法很高效。不过看到标题写着“不用stl”,你是打算之后尝试用字符数组(char array)来完全替换 string 类吗?

如果想挑战一下不使用 str1.length(),也可以试试看通过判断字符数组的结束符 \0 来循环。慢慢来就好,现在的思路已经很棒了 🙂
如果有兴趣的话,也可以试着把 #include <bits/stdc++.h> 换成更基础的 <iostream>,这样会离你“不用 STL”的小目标更近一步。

在这个过程中如果遇到任何不确定的地方,随时都可以再来发帖,大家都会在这里陪你一起进步的 🙂
0