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
файла выглядит следующим образом:другой результат от чтения файла и стандартного ввода с GetLine
ИДК 3453443
Теперь, когда я начала программу с помощью ./a.out < test
результат
TESTING LINE : IDK 3453443
0
TESTING LINE :
0
Мое предположение заключается в том, что вторая строка печатается, так как TestFile первая линия на самом деле
ИДК 3453443 + введите
Я правильно)
Но реальная проблема заключается в том, что, когда я начинаю это так: ./a.out
и введите «IDK 3453443» и нажмите enter. Результатом этого является:
TESTING LINE : IDK 3453443
1
Любые мысли, почему эти два результата отличаются?
Уверены ли вы, что у вас нет '\ r' перед' \ n' в файле? Это может быть виновником ... Попробуйте 'string pattern =" [] * ([AZ] {3}) ([0-9] +) ([] * |, [0-9] + \\ s *) «;'. Или 'regex_search' вместо' regex_match'. –
К сожалению, новый шаблон все еще не работает @стрибижев – user3142434