簡體   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