Captura de STDIN

Al crear un repository de subversión, se lanzan al sistema de files una cantidad de files de plantilla de enlace. Al inspeccionar el ejemplo de precommit hook, se detalla que el enlace se ejecuta con información pasada por argumento y aparentemente también por STDIN.

# ... Subversion runs this hook by invoking a program # (script, executable, binary, etc.) named 'pre-commit' (for which # this file is a template), with the following ordenetworking arguments: # # [1] REPOS-PATH (the path to this repository) # [2] TXN-NAME (the name of the txn about to be committed) # # [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN. 

Capturar los arguments es trivial, pero ¿cómo podría un progtwig atrapar al STDIN? El siguiente fragment de código ejecutado en int main (…) no recoge nada.

 char buffer[1024]; std::cin >> buffer; buffer[1023] = '\0'; 

¿Qué estoy haciendo mal?

La forma más fácil de leer la input línea por línea es el siguiente paradigma:

 std::string line; while(getline(line, std::cin)) { // Do something with `line`. } 

también es seguro, confiable y relativamente eficiente. No ensucie con tampones de carbonilla innecesariamente.