我对 C++ 和 TextMate 都很陌生,现在遇到了一个问题。当我使用 C++ 在 TextMate 中运行极其基本的“程序”时,它会完全忽略语句“cout >>”,要么直接忽略它,要么输入我使用的基本类型的最大数据值。
发生了什么事?我该如何阻止它?
源码如下:
#include <iostream>
int stonetolb(int);
int main() {
using namespace std;
int stone;
cout << "enter the weight in stone";
cin >> stone;
int pounds = stonetolb(stone);
cout << stone << "stone = ";
cout << pounds <<" pounds.";
return 0;
}
int stonetolb(int sts) {
return 14 * sts;
}
…无论我是否尝试输入数字,输出都是:
以石头0石头=0磅为单位输入重量。
答案1
您需要从终端运行已编译的文件。打开应用程序 » 实用程序 » Terminal.app,用于cd
进入您写入文件的目录,并进行编译。
最简单的情况是:
g++ test.cpp
然后,使用以下命令运行该程序:
./a.out
请注意,这仅适用于单个文件,而不适用于整个项目。但考虑到您的问题范围,这太过分了。您最终将很快了解高级编译和“makefile”。
为什么会这样?
问题是 TextMate 不等待任何输入。这是因为它无法在没有需要与系统交互的附加库的情况下读取输入。这TextMate 博客条目关于交互式输入讲解更多:
在 r1509 之前,TextMate 有一个非常简洁的功能:您可以运行(⌘R)一段 C、Ruby、Python、Shell 脚本等,如果代码(直接或间接)从其标准输入读取,则会显示一个对话框提示用户输入。
对于 Snow Leopard (10.6) 之前的系统,可以修复此问题。TextMate 2 应该能够再次实现此功能,但谁知道它何时推出。