【问题标题】:VC++ and *nix Compiler DifferencesVC++ 和 *nix 编译器的区别
【发布时间】:2017-01-02 06:14:35
【问题描述】:

所以,刚刚在大学开始编程我;不幸的是,这个:

提交的内容必须是记事本 *.txt 文件,采用 xx pt 固定宽度字体

:脸:

这不是重点!因此,使用 VC++ 是“必需的”(我还没有收到关于 *nix 是否可以正常工作的确认电子邮件,只要它在 Windows 中工作),这对于以下情况来说似乎是不必要的:

#include <iostream>

int main()
{
    std::cout << "Hello, world." << endl;

    system("pause");

    return 0;
}

除了我无法忍受在 Windows 环境中开发,更喜欢 *nix 机器之外...

我的问题是以下代码是否会在 Windows 中正确编译,特别是 getline 以尝试复制 system("pause") 功能:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string p;  

    cout << "Hello, world" << endl;
    cout << "Press enter...";
    getline(cin, p);

    return 0;
}

VC++ 和 *nix 编译器之间是否存在会影响简单程序执行结果的主要区别?

我在网上搜索过,但没有找到太多答案。

【问题讨论】:

  • 符合标准的代码应该适用于所有编译器。但是,作为 MSVS 用户,我可以说它缺少 g++ 或 clang 所具有的一些功能,因此您可能会遇到麻烦。
  • 好的,我想在某些时候它可能会成为一个问题,我确信并非每个 Windows 特定功能都有独立于平台的解决方案。我只是想知道是否有一些在线参考资料可用。
  • @NathanOliver,用system (pause) 删除所有从众的伪装。
  • @spectre-d 就用here的东西吧
  • @NathanOliver,太棒了!谢谢!我想我之前浏览过那个网站,但到目前为止,C 是我唯一一次尝试“真正的”编程语言(Python 宝贝),而且它们的文档对于黑猩猩来说已经足够好了。

标签: c++ visual-c++


【解决方案1】:

按要求回答特定问题:是的,std::getline(std::cin, p) 将暂停执行,直到从 std::cin 读取 \n 字符。这假定在显示提示之前没有这样的字符 - 例如,仅仅因为用户已经按下它。

【讨论】:

  • 问题不是基于getline的功能;而不是独立于平台的操作。
  • @spectre-d,我回答的完全正确,不是吗?
  • @spectre-d 所以你只需要让它编译吗?不需要让它正常工作吗?
  • @spectre-d,我想,当我告诉你它在 Windows 上的作用时,我也隐含地确认它在那里编译?
  • @spectre-d 明确没有错。只是理解编译是工作的必要前提是有经验的程序员理所当然的基本概念。就像您还没有建造飞机,就不可能拥有工作飞机。但如果您是该领域的新手,这可能并不明显。
【解决方案2】:

使用 one 的 the Visual Studio 2015 在线编译器,您可以验证它确实可以编译。存在无法输入任何内容的问题,但您至少可以验证它是否编译并查看输出以供将来分配。

【讨论】:

  • 太棒了,这对我很有用。我搜索了类似的东西,但没有找到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多