Hier ist ein C Beispiel aus Echo All Palindromes, in 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;
}
Um es zu C anzupassen ++: Schreibfunktion (es ist palindromes
oben), der akzeptiert std::istream&
; übergeben Sie es entweder std::cin
(für Standardeingabe oder '-' Dateiname) oder ifstream
Objekte von der main()
Funktion.
Verwenden Sie std::getline()
mit einem gegebenen std::istream
Objekt innerhalb der Funktion, Zeile für Zeile Zeile lesen (die Funktion kümmert sich nicht, ob die Eingabe aus einer Datei oder Stdin ist).
ja, ich denke, was du gesagt hast ist was ich suche. Was du sagst ist, dass ich etwas wie getline (std :: cin, mystring) verwenden soll? – Bob
wäre es möglich zu erweitern, was Sie gesagt haben, direkt in die Shell verwendet werden?Zum Beispiel, wenn ich wollte, dass das Programm Zeile für Zeile von der Shell liest ... – Bob
Im obigen Beispiel macht die Shell unsere Leben einfacher, indem wir Pipes erstellen und dann die Bytes zwischen den Programmen übertragen. Wenn Sie in Ihrem Code tun wollen, dann müssen Sie entweder eine Named Pipe wie ich erwähnt verwenden oder mit der "System()" -Funktion prüfen, Shell-Befehle auszuführen. – Arunmu