2016-05-04 3 views
4

私はBabelを使ってorg-modeのコードブロックを評価できることを知っています。しかし、バベルは "シン"を扱うことができないようです。この"cin"が関係するコードブロックを評価するために、org-modeでBabelを使用することはできますか?

int a;std::cin >> a;std::cout << a; 

同様バベルは、入力する値を掲載していません、それは出力値0

缶バベルは、この問題に対処しますか?または、他のツールでこれを行うこともできます。

+0

可能性はありません。 http://stackoverflow.com/questions/12129038/how-to-pipe-in​​put-to-a-src-block-as-stdin – pdexter

答えて

3

私はこれに対して2つの異なるアプローチを考えることができます。最初の方法は、input.dataのようなファイルをホームディレクトリに例えば4の内容で作成することです。これはstd::cinに供給されます。すると、次のようなコードを書く:

#+begin_src C++ :results output :includes <iostream> :cmdline < ~/input.data 
int a; 
std::cin >> a; 
std::cout << a; 
#+end_src 

#+RESULTS: 
: 4 

をより興味深いものです第二のアプローチは、対話のためのlispコードの少しを使用することです。このアプローチでは

#+name: input 
#+begin_src elisp 
(completing-read "Enter a number: " nil) 
#+end_src 

#+begin_src C++ :results output :var input=input 
#include <iostream> 
#include <string> 

int main() { 
    int a = std::atoi(input); 
    std::cout << a; 
} 
#+end_src 

#+RESULTS: 
: 3 

、あなたは次のようになりますemacsの中に数字を入力するよう促しました。数字はC++コードで使用されます。

+0

ありがとうございました!それが答えです。そして、私は "#include "が必要だと思います。 – ernest

+0

@ernestよろしくお願いします! –

関連する問題