在C ++中读取行时过滤非字母数字字符?

时间:2012-06-23 14:13:49

标签: c++ inputstream user-input

是否可以仅从给定的输入行读取字母数字字符而忽略C / C ++中的其他所有字符?我试图一次读整行。

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

 aaa, bbb, ccc .

这里,我的目的是在输入时忽略逗号,点和空格。

2 个答案:

答案 0 :(得分:4)

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

#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中,您可以稍微简化一下)

答案 1 :(得分:-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