Вот пример C из Echo All Palindromes, в C :
int main(int argc, char* argv[]) {
int exit_code = NO_MATCH;
if (argc == 1) // no input file; read stdin
exit_code = palindromes(stdin);
else {
// process each input file
FILE *fp = NULL;
int ret = 0;
int i;
for (i = 1; i < argc; i++) {
if (strcmp(argv[i], "-") == 0)
ret = palindromes(stdin);
else if ((fp = fopen(argv[i], "r")) != NULL) {
ret = palindromes(fp);
fclose(fp);
} else {
fprintf(stderr, "%s: %s: could not open: %s\n",
argv[0], argv[i], strerror(errno));
exit_code = ERROR;
}
if (ret == ERROR) {
fprintf(stderr, "%s: %s: error: %s\n",
argv[0], argv[i], strerror(errno));
exit_code = ERROR;
} else if (ret == MATCH && exit_code != ERROR)
// return MATCH if at least one line is a MATCH, propogate error
exit_code = MATCH;
}
}
return exit_code;
}
Чтобы адаптировать его к C ++: напишите функцию (это palindromes
выше), которая принимает std::istream&
;передайте ему либо std::cin
(для стандартного ввода, либо '-' имя файла), либо ifstream
объекты из функции main()
.
Используйте std::getline()
с данным объектом std::istream
внутри функции длячитать входные данные построчно (функция не заботится о том, является ли ввод из файла или стандартного ввода).