c/c++ 中文输出乱码?

王小c 2016-09-26 01:24:46
用的是c-free, 前面编的文件没有出现这个问题,突然这个cpp输出就变成乱码了,而且头文件里的函数里输出也正常?咋回事呀,讲一下原理和解决方法吧
...全文
4604 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_17716703 2019-03-30
  • 打赏
  • 举报
回复
试着把win10的控制台改为旧版本的,
jcShan709 2019-01-23
  • 打赏
  • 举报
回复
不要用编译器编译,用控制台指令。
指令:g++ -fexec-charset=GBK -finput-charset=UTF-8 -o <文件名(不带后辍名)> <文件名(带后辍名)> -Wall
赵4老师 2016-09-27
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
王小c 2016-09-26
  • 打赏
  • 举报
回复
引用 9 楼 zwfgdlc 的回复:

cout.imbue(locale("chs"));

试下加一行


停止工作了,,
zwfgdlc 2016-09-26
  • 打赏
  • 举报
回复

cout.imbue(locale("chs"));
试下加一行
王小c 2016-09-26
  • 打赏
  • 举报
回复
引用 7 楼 u010370871 的回复:
[quote=引用 6 楼 qq_31707969 的回复:] #3 我试一下吧,最近刚开始学编译原理 但我奇怪的是, cout呀,printf这些输出函数里 “ ” 引号之内的内容编译器不是不编译直接输出吗,怎么输出出来就换了一种编码方式了?
输出也得按照你的cpp的编码方式输出啊[/quote] 请问你知道怎么办嘛
张小飞Official 2016-09-26
  • 打赏
  • 举报
回复
引用 6 楼 qq_31707969 的回复:
#3 我试一下吧,最近刚开始学编译原理 但我奇怪的是, cout呀,printf这些输出函数里 “ ” 引号之内的内容编译器不是不编译直接输出吗,怎么输出出来就换了一种编码方式了?
输出也得按照你的cpp的编码方式输出啊
王小c 2016-09-26
  • 打赏
  • 举报
回复
#3 我试一下吧,最近刚开始学编译原理 但我奇怪的是, cout呀,printf这些输出函数里 “ ” 引号之内的内容编译器不是不编译直接输出吗,怎么输出出来就换了一种编码方式了?
王小c 2016-09-26
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <iostream>
#include "LinkList.h"
using std::cout;
using std::endl;
using std::cin;


int main()  
{
	_tsetlocale(LC_ALL, _T("chs"));
	
	LinkList L;
	
	cout << "1.链表初始化" << endl;
	InitList(L);
	cout << "初始化成功" << endl;
	
	cout << endl;
	
	cout << "2.前插法创建链表" << endl;
	CreateList_H(L, 5);
	cout << "检查:" << endl;
	OutputList(L);
	
	cout << endl;
	
	cout << "3.后插法创建链表" << endl;
	CreateList_R(L, 5);
	cout << "检查:" << endl;
	OutputList(L);
	
	cout << endl;
	
	cout << "4.取值函数" << endl;
	cout << "取第i个元素,i = ";
    int i;
	cin >> i;
	cout << endl; 
	int e; 
	GetElem(L, i, e); 
	cout << "第三个元素为" << e << endl;
	
	cout << endl;
	 
	cout << "5.插入函数" << endl;
    cout << "插入到第i个元素,i0 = ";
    int i0;
	cin >> i0;
	cout << endl;
    cout << "插入值为: ";
	int d; 
	cin >> d;
	ListInsert(L, i, d); 
	cout << endl;
	cout << "检查:" << endl;
	OutputList(L);
	
	cout << endl;
	
	cout << "6.查找函数" << endl;
    cout << "查找的数据值为:";
	int d0; 
    cin >> d0;
	cout << endl;	 
	cout << "该元素在第 " << LocateELem(L, d0) << " 个位置。"
		 << endl;
	
	cout << endl; 
 
 	cout << "7. 删除函数" << endl; 
 	cout << "删除第几个函数:";
 	int i1;
    cin >> i1;
 	cout << endl;
 	ListDelete(L, i1);
	cout << "检查:" << endl;
	OutputList(L);
	
	return 0;
}
#2 其实就是一个很简单的 单链表 测试代码,和其他的成功运行的代码没什么两样 比如下面是没有出现乱码的一个cpp

#include <stdio.h>
#include <iostream>
#include "SequenceList.h"
using std::cout;
using std::endl;

int main()
{
	SqList L;
	
	cout << "▼1" 
		 << endl
		 << "▲函数 InitList 测试..." 
		 << endl
         << "初始化顺序表 L ..." << "初始化成功!"
		 << endl;					 
		
	InitList(L);
			
	cout << "Press any key..." <<endl;
	getchar();
		
	cout << "▼2"
		 << endl
		 << "▲函数 ListInsert&GetElem 测试..." 
		 << endl;	
	
	for(int i=1; i<=6; i++)	
	{
			cout << "作为示范,在L第" << i << "个位置插入数据元素" << 2*i
			     << endl;
			ListInsert(L, i, 2*i);	
	}

	cout << "顺序表元素输出:";

	for(int i=0; i<L.length; i++)	
		cout << "L[" << i+1 <<"] = " <<  GetElem(L, i+1)
	         << endl;

			 cout << "Press any key..." <<endl;
	getchar();

	cout << "▼3"
		 << endl
		 << "▲函数 ListDelete&LocateElem 测试..." 
		 << "删除值为6的元素"
		 << endl;

	ListDelete(L, LocateElem(L, 6));

    cout << "顺序表元素输出:";

	for(int i=0; i<L.length-1; i++)
		cout << "L[" << i+1 <<"] = " <<  GetElem(L, i+1)
	         << endl;

	return 0;
}
王小c 2016-09-26
  • 打赏
  • 举报
回复
#1 我把代码和头文件加进去了,但是,,,LinkList-main.cpp:12: error: `_tsetlocale'&_T was not declared in this scope
赵4老师 2016-09-26
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
小灸舞 2016-09-26
  • 打赏
  • 举报
回复
检查下你的LinkList-main.cpp的文件 编码是不是和你的别的文件不同。
zwfgdlc 2016-09-26
  • 打赏
  • 举报
回复
#include <locale.h>

int main()
{
_tsetlocale(LC_ALL, _T("chs"));
}

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧