【问题标题】:Can't assign value to string (Eclipse CDT, MinGW, C++)无法为字符串赋值(Eclipse CDT、MinGW、C++)
【发布时间】:2016-09-11 00:26:25
【问题描述】:

我正在尝试声明一个字符串变量并将文本“hello”放入其中,但它不会运行。我做错了什么?

#include <iostream>
#include <string>

using namespace std;

int main() {

    cout << "Hello!" << endl;

    int b = 12;
    cout << b << endl;      

    string a;
    a = "hey";

    return 0;
}

构建程序工作得很好(据我所知)。当我运行这个程序时,Eclipse 的控制台窗口什么也没有显示,并且在顶部显示:“(退出值:-1 073 741 511)IfStatement.exe [C/C++ Application] C:\Users\My_Username\OneDrive\Programming \Eclipse\IfStatement\Debug\IfStatement.exe (15.05.2016, 01.53)”。

当我删除这部分时:

a = "hey";

一切都按预期进行。以某种方式破坏程序的是字符串的实际值分配。怎么回事?

感谢您抽出宝贵时间,如果您需要更多信息,请随时询问。

【问题讨论】:

  • 对我来说很好ideone.com/i35t40
  • 这很奇怪,我可以在配置或安装过程中运行一些东西吗?其他程序似乎工作得很好,我只是不能将字符串值分配给字符串变量。
  • 我在 Visual Studio 中尝试了这个确切的程序,它运行完美。我真的不知道 Eclipse 中的问题是什么,但我可能在安装或设置 MinGW 或 Eclipse 时犯了一个错误。

标签: c++ eclipse string mingw


【解决方案1】:

发生这种情况是因为程序正在执行 return 语句并在您看到输出之前退出。在 return 语句之前,抛出一个 getchar() 调用,或者使用 system("pause")。这将冻结控制台窗口并允许您查看输出,应该是“Hello!”然后是下一行的“12”。

【讨论】:

  • 这没有帮助。 system("pause") 给了我一条红色波浪线,与 getchar() 相同。我对 C++ 语法真的很陌生。我尝试使用谷歌搜索每个命令的用法,但无论我尝试什么,我都得到了红色波浪线。但是我尝试了 cin.get();但这没有做任何事情,仍然是同样奇怪的退出代码。另外,我认为问题不在于程序执行太快,因为当我删除 a = "hey";行,我得到所有其他输出。欢迎提出更多建议!
  • 听起来像是 Eclipse 中的配置问题,因为当我在 Visual Studio 2015 中运行代码时,代码运行良好。我将在 eclipse 中创建默认的 Hello World 程序并运行它。如果你得到同样的错误,那么它只是一个IDE问题。
  • 是的,我已经放弃了 Eclipse 并转而使用 Visual Studio,因为它可以工作。谢谢您的帮助! :)
猜你喜欢
  • 2013-11-19
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2014-06-28
  • 2015-11-19
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多