2017-11-15 5 views
-1

ファイルを読み込み、10より大きい整数値の前に文字があるかどうかを確認したい。ファイル内の項目スペースで区切られ、リストの最後には "endl;"があります。数値以外の文字の前に整数があるかどうかを確認するC++

これまでのところ、ファイル内に整数の配列を取得しようとしましたが(配列を読み込んで10以上のものがあるかどうかを調べるだけです)、等しく、ファイルを読み込んで文字を読み込んでいました数字ではありませんが、私が見つけた非数字文字と大きすぎる整数の位置を比較する方法はありませんか?どんなアドバイスも大歓迎です!

// i.e. sample file may contain: 
1 2 3 A 6 12 90 //(in which case the letter appears first). 
// example two: 
34A 20 4 5 6 7 //(large number here appears first). 
+0

でのcharをしています継続して同じ項目をint型またはスペースで区切られましたか?サンプルファイルの内容は役に立ちます –

+0

http://idownvotedbecau.se/nocode/ – user0042

+0

@KillzoneKid charとintは同じ項目である場合とそうでない場合があります。私。ファイルは "1 2 3 A 6 12 90"(最初の文字が表示されます)でもかまいません。 – Carol

答えて

0

正規表現を使用できます。以下は、これは、あなたがターゲットとしているC++標準に応じて、(例えば01A用)ゼロパディングnumericals

を持っていない限り、あなたができることがあります動作します手紙

\d{2,}[a-zA-Z] 

に続く2桁以上を見つけるだろう<regex>を使用してください。その詳細情報here

Here is an exampleすべてのマッチを返す方法。

+1

このような単純な解析問題のために、正規表現のほとんどは_overshoot_です。 – user0042

+0

私は同意しません。正規表現検索関数は、10行未満のコードで記述することができます。 – ventsyv

+0

あなたは良い古い 'std :: istream'テキスト抽出メソッドを10行未満のコードで実行することができます。何ですか? – user0042

0

配列は必要ありません。最初に遭遇する配列を把握するだけで済みます。このような

何か:

  • 限り、入力がある
  • letter_first変数を定義します。
    • を一つのこと
    • を読むそれは手紙だ場合、それは整数の前に発生します> 10; letter_firstをtrueに設定してループから抜け出す
    • 数字が10より大きい場合は、文字の前に表示されます。 falseに設定letter_firstとループ
    • そうでないから抜け出す、次の項目
  • 使用結果
+0

しかし、文字に対して文字を2桁で表すと、どのように読み込まれますか?あなたは1文字で1つの整数を読むことができるように応答していますか? – Carol

+0

私は間違っているかもしれませんが、ずっと前に整数の文字列にする方法を学んだと思います。したがって、整数を読み込む代わりに、文字列を読み込み、それが文字でない場合は整数に変換します。 – molbdnilo

関連する問題