You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么包含string属性自定义类的C++程序在IDE/编辑器中无输出?

提问内容

我尝试运行包含带有string和int属性的自定义类的C++程序时,没有得到任何输出,我尝试执行的代码如下:

#include <iostream>
#include <string>
class Employee
{
public:
  int Age;
  std::string Name;
  void Introduction()
  {
    std::cout << "Name is " << Name << "\n";
    std::cout << "Age is " << Age << "\n";
  }
};
int main()
{
  Employee e1;
  e1.Age = 21;
  e1.Name = "EName";
  e1.Introduction();
  std::cout << "Hello World" << std::endl;
  return 0;
}

我使用VS Code和Atom编辑器运行上述代码,都没有得到任何输出。
而如下代码可以正常输出我期望的结果:

#include <iostream>
#include <string>
class Employee
{
public:
  int Age;
  //std::string Name;
  void Introduction()
  {
    //std::cout << "Name is " << Name << "\n";
    std::cout << "Age is " << Age << "\n";
  }
};
int main()
{
  Employee e1;
  e1.Age = 21;
  //e1.Name = "EName";
  e1.Introduction();
  std::cout << "Hello World" << std::endl;
  return 0;
}

我尝试通过命令提示符运行第一个程序,得到了运行报错。
我已尽可能提供了该问题的所有相关信息,如果还有遗漏需要补充的内容请告知我,谢谢。


问题解答

根因分析

该问题是C标准库链接异常导致的:仅使用int这类基础数据类型时,即使编译配置有问题也可能正常运行,但用到std::string这类需要依赖完整C标准库的复杂对象时,就会出现运行时崩溃、无输出的情况。绝大多数这类问题都是因为使用了C语言编译器gcc编译C代码,没有自动链接C标准库。

解决步骤

  • 命令行编译时,直接使用C++专用编译器g++执行编译:
    g++ 你的代码文件名.cpp -std=c++11 -o 生成的程序名.exe
    
    例如代码文件名为test.cpp时,执行g++ test.cpp -std=c++17 -o test.exe,编译完成后运行生成的exe即可正常输出内容。
  • 调整编辑器的编译配置:
    打开VS Code或Atom的C/C++扩展设置,找到编译器路径配置项,将默认的gcc.exe替换为本地MinGW安装目录下的g++.exe,保存配置后重新运行代码即可。
  • 如果以上操作后仍存在问题,卸载老旧的32位MinGW,安装最新版的MinGW-w64运行环境即可解决标准库兼容bug。

内容的提问来源于stack exchange,提问作者Dishant Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 16:12:01