我知道我们可以使用Babel来评估org-mode中的代码块。但似乎巴贝尔无法处理“cin”。喜欢这个
int a;std::cin >> a;std::cout << a;
Babel不要求我输入a的值,并输出值0。
Babel可以解决这个问题吗?或者其他一些工具可以做到这一点。
答案 0 :(得分:3)
我可以想到两种不同的方法。第一种方法是在主目录中创建一个类似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++
代码中使用。