繁体   English   中英

从文件读取输入时,C ++忽略字母字符

[英]C++ ignore alphabetical characters when reading input from a file

我有一个程序可以从文本文件中获取输入流,该文件包含正整数,以空格分隔。 该文件仅包含数字和abc一个实例,在继续从文件中读取数据之前,我的程序应忽略该实例。

这是我的代码,它不起作用

    int line;
    in >> line;
    in.ignore(1, 'abc');
    in.clear();

有人可以指出问题是什么吗? 本质上,我想放弃alpha输入,清除cin并继续从文件中读取,但是却遇到了无限循环。

此代码应该有效

我从输入流中获得了三个部分,并将有用的部分放入stringstream并从中读取

int part1, part2;
std::string abc;
in >> part1 >> abc >> part2;
std::stringstream ss;
ss << part1 << part2;
int line;
ss >> line 

您可以通过这种方式明确地忽略任何字母字符:

#include <locale>
#include <iostream>

std::istream& read_number(std::istream& is, int& number) {
    auto& ctype = std::use_facet<std::ctype<char>>(is.getloc());
    while(ctype.is(std::ctype_base::alpha, is.peek())) is.ignore(1);
    return is >> number;
}

int main() {
  using std::string;
  using std::cin;
  using std::locale;

  int number;
  while(read_number(std::cin, number)) {
    std::cout << number << ' ';
  }
}

对于“ 452abc def 23 11 -233b”这样的输入,将产生“ 452 23 11 -233”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM