【发布时间】:2012-06-23 14:13:48
【问题描述】:
是否可以只从给定的输入行读取字母数字字符而忽略 C/C++ 中的所有其他内容?我正在尝试一次阅读整行。
假设我们必须阅读这一行:
aaa, bbb, ccc .
在这里,我的意图是在接受输入时忽略逗号、点和空格。
【问题讨论】:
标签: c++ inputstream user-input
是否可以只从给定的输入行读取字母数字字符而忽略 C/C++ 中的所有其他内容?我正在尝试一次阅读整行。
假设我们必须阅读这一行:
aaa, bbb, ccc .
在这里,我的意图是在接受输入时忽略逗号、点和空格。
【问题讨论】:
标签: c++ inputstream user-input
您可以通过多种方式执行此操作,例如,最简单的方法是读取整行,然后删除您以后不需要的位:
#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 中你可以稍微简化一下)
【讨论】:
您可以编写一个字符串数组并使用逗号、点和空格作为字符串分隔符。将每个字符串存储在数组中,然后输出。
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
【讨论】: