C / C ++の他のすべてを無視して、指定された入力行からのみ英数字を読み取ることは可能ですか?私は一度に全行を読み込もうとしています。
次の行を読む必要があるとします。
aaa, bbb, ccc .
ここでは、入力時にコンマ、ドット、スペースを無視するつもりです。
C / C ++の他のすべてを無視して、指定された入力行からのみ英数字を読み取ることは可能ですか?私は一度に全行を読み込もうとしています。
次の行を読む必要があるとします。
aaa, bbb, ccc .
ここでは、入力時にコンマ、ドット、スペースを無視するつもりです。
これはいくつかの方法で行うことができます。たとえば、最も簡単な方法は、行全体を読み取ってから、後で不要なビットを削除することです。
#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";
}
}
行を読み取り、。に対してfalseを返す文字をすべて削除しますisalnum
。(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