【问题标题】:Filter non alphanumeric characters while reading line in C++?在 C++ 中读取行时过滤非字母数字字符?
【发布时间】:2012-06-23 14:13:48
【问题描述】:

是否可以只从给定的输入行读取字母数字字符而忽略 C/C++ 中的所有其他内容?我正在尝试一次阅读整行。

假设我们必须阅读这一行:

 aaa, bbb, ccc .

在这里,我的意图是在接受输入时忽略逗号、点和空格。

【问题讨论】:

    标签: c++ inputstream user-input


    【解决方案1】:

    您可以通过多种方式执行此操作,例如,最简单的方法是读取整行,然后删除您以后不需要的位:

    #include <algorithm>
    #include <iostream>
    #include <string>
    #include <functional>
    #include <ctype.h>
    
    int main() {
      std::string line;
      while (std::getline(std::cin, line)) {
        line.erase(std::remove_if(line.begin(), line.end(), std::not1(std::ptr_fun(isalnum))), line.end());
        std::cout << line << "\n";
      }
    }
    

    读取一行,然后删除任何为 isalnum 返回 false 的字符。 (在 C++11 中你可以稍微简化一下)

    【讨论】:

    • 这就是我试图做的,但我无法让它工作:p
    【解决方案2】:

    您可以编写一个字符串数组并使用逗号、点和空格作为字符串分隔符。将每个字符串存储在数组中,然后输出。

    aaa, bbb, ccc .
    
    aaa will be stored in string[0]
    bbb will be stored in string[1]
    ccc will be stored in string[2]
    

    然后只需通过 for 循环输出字符串,您就会得到

    aabbcc

    【讨论】:

    • 我必须忽略除逗号、点和空格之外的所有非字母数字字符。
    猜你喜欢
    • 2011-07-13
    • 2020-01-29
    • 2020-11-05
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多