如何在 C++ 和 TextMate 中使用“cin”和“cout”?

如何在 C++ 和 TextMate 中使用“cin”和“cout”?

我对 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 应该能够再次实现此功能,但谁知道它何时推出。

相关内容