2012-01-20 6 views
3

私はちょうどC++を学び始めています。文字列が数字で始まるかどうかテストするためのオプションは何ですか?私の関数is_page_numberは、次のプログラムでは(私は思う)トリックを行います。これは悪い考えですか?正規表現はどのように使うことができますか?コードの一部がうまく書かれていない場合は、コメントをいただければ幸いです。文字列が数字で始まっているかどうかをテストします。

#include <string> 
#include <iostream> 
#include <fstream> 

using std::string; 
using std::cout; 
using std::ifstream; 
using std::endl; 

bool is_page_number(const string& aline) { 
    return aline[0] == '1' | aline[0] == '2' | aline[0] == '3' | aline[0] == '4' | aline[0] == '5' | aline[0] == '6' | aline[0] == '7' | aline[0] == '8' | aline[0] == '9'; 
} 

int main() { 
    const string temp_filename("test_input.txt"); 
    ifstream input(temp_filename.c_str()); 
    string one_line; 
    while (getline(input,one_line)) { 
      if(is_page_number(one_line)) { 
        cout << "page number: "; 
      } 
      cout << one_line << endl; 
    } 
} 
+1

ビット単位のOR演算子を使用しないでください|あなたが本当に論理的な意味か||を意味するとき。また、is_page_numberが空文字列を受け取った場合にどうなるか考えてみてください。同様に、文字列が0で始まる場合はどうなりますか?私はすでにcctypeの正しい機能を指し示す答えを見ていますが、これらの他の点についても熟考しています。 – nsanders

+0

@nsanders、それが0で始まる場合、それは8進数のページ番号です! ;-) –

+0

@nsandersは考えるべき大きなポイントです。これらのありがとう!私はis_page_numberが空文字列を受け取ることができるのは、one_lineが空文字列の場合のみです(これは正当な仮定ですか、それとも私がそれを仮定することはできませんか?)。ですから、私はone_lineが空でないことを確認する必要があります。 –

答えて

4
#include <cctype> 

return isdigit(aline[0]); 
+1

この機能のためのドキュメントは次のとおりです。http://www.cplusplus.com/reference/clibrary/cctype/isdigit/ – nsanders

関連する問題