2
bool validateCurrencyLine(string line){
cout << "TESTING LINE : " << line << endl;
string pattern = "[ ]*([A-Z]{3}) ([0-9]+)([ ]*|,[0-9]+[ ]*)";
boost::regex expr{pattern};
return boost::regex_match(line,expr);
}
int main()
{
string line;
while(getline(cin,line)){
cout << validateCurrencyLine(line) << endl;
}
return 0;
}
test
文件的內容如下:不同結果
IDK 3453443
現在,當我使用./a.out < test
結果是啓動程序
TESTING LINE : IDK 3453443
0
TESTING LINE :
0
我的假設是,第二條線是印刷,因爲testfile的第一行實際上是
IDK 3453443 +進入
我是正確)
但真正的問題是,當我象這樣開始:./a.out
並輸入「IDK 3453443」,然後按回車。結果是:
TESTING LINE : IDK 3453443
1
這兩個結果有什麼不同?
你確定在文件中的\ n之前沒有'\ r'嗎?這可能是罪魁禍首...嘗試'string pattern =「[] *([AZ] {3})([0-9] +)([] * |,[0-9] + \\ s *) 「'。或'regex_search'而不是'regex_match'。 –
不幸的是,新模式仍然沒有工作@stribizhev – user3142434