C++ Visual studio2017无法输出中文或者输出中文时显示为乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Visual studio2017无法输出中文或者输出中文时显示为乱码相关的知识,希望对你有一定的参考价值。

当想输出一个简单中文时,显示如下错误;有的尽管能输出成功,却显示如此乱码。

你用notepad++打开,全选你的代码,然后选编码这样试试,我用Qt也经常遇到这个问题,但vs2017我不知道行不行,你可以试试

参考技术A 去掉 #include"stdafx.h" 参考技术B 向输出流 cout.imbue() 一个中文的 locale

C++ 无法在 Visual Studio 中实现抽象类

【中文标题】C++ 无法在 Visual Studio 中实现抽象类【英文标题】:C++ Cannot implement abstract class in Visual Studio 【发布时间】:2020-02-12 20:08:59 【问题描述】:

我尝试在 C++ 中实现模式状态,但显然我的基类是not a class or struct name。我在 Visual Studio 2019 中收到此错误。我的基类如下:

#pragma once

class LightingState

public:
    LightingState() ;
    virtual void shine() = 0;
;

应该实现shine() 函数的类如下所示:

#pragma once

class White : public LightingState

public:
    void shine();
private:

;

对于我的基类LightingState,我没有.cpp 文件,因为我确实希望这个类是一个纯抽象类。

当我尝试应用建议的修复(为 Base 'LightingState' 实现纯虚拟)时,我收到一个警告窗口:

在图片中,你也可以看到我的类在同一个项目中。

【问题讨论】:

你没有包括你定义LightingState的标题 在使用名称LightingState(作为White 的基类)时,该名称不可见。代码需要一个#include 指令来提取定义类LightingState 的文本。 请在问题中以文本形式包含错误消息 void shine(); --> void shine() override; 【参考方案1】:

编译器在解析White类的定义时,不知道LightingState类型是什么,因为它还没有被定义。您需要在White.h 中添加#include "LightingState.h" 语句。

#pragma once

#include "LightingState.h" // <-- ADD THIS!

class White : public LightingState

public:
    void shine();
private:

;```

【讨论】:

以上是关于C++ Visual studio2017无法输出中文或者输出中文时显示为乱码的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2017 (Native c++) 中禁用数据断点

Visual Studio 2017 15.5 打破 C++ TypeDefs

如何在 Visual Studio 2017、C++、CMake 中使用数据断点?

如何在 Visual Studio 2017 [C++] 中使用 GLOP 线性求解器

C 文件无法在 c++ Visual Studio 中编译

使用 Visual Studio 2015、C++ 项目的 DLL 没有“复制到输出目录”