2015-10-06 22 views
14

Quello che sto cercando di fare è fondamentalmente:Clion standard input durante il debug

./myProgram < myData.txt

mentre io sono il debug con Clion IDE. Non riesco proprio a trovare l'opzione per farlo.

A similar domanda - ma per MSVS

+0

Si dovrebbe avere più fortuna questa domanda in appropriato dev's [forum] (https://devnet.jetbrains.com/community/clion?view=discussions) – Dialecticus

risposta

16

specifica del prodotto che ho avuto lo stesso problema e sembra che Clion non gestisce ancora ingressi standard.

Ho risolto questo problema modificando il flusso di input prima di eseguire il mio programma.

Per fare un esempio, se si desidera introdurre un flusso di file all'interno del vostro standard input è possibile scrivere nel vostro principale:

std::ifstream in("ABSOLUTE_PATH_TO_YOUR_FILE"); 
std::cin.rdbuf(in.rdbuf()); 

allora si può trovare un modo per cambiare questo flusso changement quando si desidera. Si noti che per i file è necessario fornire un percorso assoluto poiché l'applicazione viene eseguita da una directory diversa da quella corrente.

Spero che questo possa aiutare finché Clion non fornisce una soluzione reale.

+0

Se non vuoi farlo con un file, ricorda che c'è 'stringstream's che puoi utilizzare – smac89

5

Assumendo che il file di input è myData.txt, è possibile riaprire/riutilizzare il flusso stdin utilizzando freopen

freopen("myData.txt","r",stdin);

se si vuole fare lo stesso con l'output:

freopen("myOutput.txt","w",stdout);

questo funzionerà per std :: cin, printf, ecc ...

Potete trovare ulteriori informazioni su questo qui: http://www.cplusplus.com/reference/cstdio/freopen/


A proposito, c'è già una richiesta di funzionalità per questo. Se sei interessato, puoi votare qui in modo che abbia la priorità: https://youtrack.jetbrains.com/issue/CPP-3153

0

Per me, CLion crea l'eseguibile in un file chiamato "cmake-build-debug". Controlla la mia struttura dei file nella foto.

Executable File Relative To Text File

Poi, ho appena aperto il mio terminale e sono andato alla directory contenente l'eseguibile e usato questo comando per tubo nel file di testo:

./FirstProject < ../hw1.txt 
+0

Sì, ma questo è chiedere informazioni sul debug. Non è lo stesso che eseguire il programma – smac89

Problemi correlati