Я только начинаю изучать 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;
}
}
Не используйте побитовое или оператора | когда вы действительно имеете в виду логическое или ||. Также подумайте, что произойдет, если is_page_number получит пустую строку. Аналогично, что произойдет, если строка начинается с 0? Я уже вижу ответ, указывающий на правильную функцию в cctype, но обдумайте и другие. – nsanders
@nsanders, если он начинается с 0, то это восьмеричный номер страницы! ;-) –
@nsanders отличные моменты, о которых нужно подумать. Спасибо вам за это! Я предполагаю, что is_page_number может получить пустую строку только в том случае, если one_line является пустой строкой (это справедливое предположение или я даже не могу предположить это?). Поэтому мне нужно будет проверить, что one_line не пуст или что происходит, когда это происходит. –