code::blocks 初使用遇到的问题记录
/* 做本程序遇到的问题:由于使用的是CODE::BLOCKS 开发环境,刚开始使用code::blocks是,什么都
没有设置,居然输入的中文字符串,保存项目后,再次打开,code::blocks不能正确识别源文件编码,没能识别
成:936中文代码页,而是 10** 什么的,打开后中文区域就是乱码. 后来找到设置,发现是没有强制指定用户
需要的代码页所致,后来设置为强制就OK了,{不过,把源文件改成UTF8,来保存也是可以的(因为编辑器默认是UTF-8来打开),但是COUT<<"中华人民共和国"}
这样的中文字符串时,控制台输出为乱码(编译器又带来了编码不匹配),因为控制台默认不支持UTF8,或codeblock本地化做的不好的缘故,按道理
可以改控制台为chcp 65001是可以看到中文的,但codeblocks看不到.
只有指定编译参数:-fexec-charset=GBK
-finput-charset=UTF-8
这样就可以强制输出的exe为GBK运行编码而不是UTF运行编码了.就可以正确显示中文了,
如果还要搞Wchar_t的UNICODE 还需要setlocal(lc_all,"chs"),并且要么源文件是UTF-8,要么-finput-charset设置为GBK,否则编译期就要报错.........
////////////////////////////////////////////////////////////////////////////////////////////////// 网上查到的关于codeblocks编译器,编码的问题解释: 1.Code::Blocks 编辑器保存源文件用的编码。
默认情况下,是保存为windows本地编码的,也就是WINDOWS-936字符集,也就是GBK编码。
但是很神奇的是,GCC编译器默认编译的时候是按照UTF-8解析的。你存成GBK,但是当成UTF-8解析,这还能编译通过,这才有鬼了,所以这两个地方编码不统一好,编译的时候报错:error: converting to execution character set: Illegal byte sequence,你根本连通过编译的可能性都没有!
其实要解决这个问题很简单,编写Code::Blocks的人只需要在调用编译器之前检测一下源文件是什么编码,然后就自动让编译器用什么编码进行解释,问题就解决了。只是很可惜,Code::Blocks编写的人可能还没有这么做,或许是对本地化认识不够吧,也可能是觉得没必要吧?(所以就给初学的人带来问题了,所以就觉得易用性不如微软了,免费和商业的东西还是有差距的。。。) 2。GCC编译器编译的时候对输入的源文件解释用的编码
这个编译器可以设置-finput-charset=charset来指定编译器用什么编码解释输入源文件。比如如果源文件的字符集是GBk,那么就必须指定-finput-charset=GBK,如果不指定,一律当做UTF-8处理。
除非你源文件真的是UTF-8,否则就会出现转换错误。 3。编译好的执行文件所用编码
如果你1和2两个地方的编码都能统一,那么编译时不会报错了,但是编译好了,运行一下看看,在控制台显示的依然是乱码!
那是因为控制台显示的时候缺省的是使用系统默认的字符集,比如windows下用的是GBk,但是默认情况下,编译之后的执行文件时编译成UTF-8的,所以又出现了不统一,乱码由此而生!
解决的方法和简单,就是给编译器加上选项:-fexec-charset=GBK,和windows默认的统一,就OK了。 搞懂了乱码产生的原因,那么不难得出结论,如何修改,你想修改成什么都OK,关键是要统一,并不是像网上一些人说的,修改成GBK就OK,其实你要修改成UTF-8都OK,关键是统一。 */
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std; ///////////////////////////////////////////////////////////////////////////////
//最简单的类模版
template <class M>
class A
{
M ta;
public:
A(M x):ta(x) //这里很有特点,可以在构造函数的初始化表中初始化本类的成员变量.
{
ta=x; //用这种方法也是一样的,但可以认为不是初始化,而是赋值.
//区别是:任何类型的const和引用数据成员必须在初始化表中初始化,
//如果在构造函数内部进行初始化就会产生编译时刻错误.
} void print();
}; template <class M>
void A<M>::print()
{
cout<<ta<<endl;
}
/////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
//测试普通类也是可以通过构造函数初始化表中初始化类成员变量.
class test
{
private:
int a,b;
public:
test(int x):a(x),b(x)
{
a=;
b=;
}; void pr(); }; void test::pr()
{
cout<<a<<" "<<b<<" "<<endl;
} ////////////////////////////////////////////////////////////////////////////////////// int main()
{ setlocale(LC_ALL,"chs"); wchar_t a=L'陈'; //printf("%d",(WORD)a);
//printf("%d",HIBYTE(a));
//printf("%d",LOBYTE(a)); //wchar_t a=L'陈';
//printf("%d\n",(WORD)a);
//printf("%d\n",HIBYTE(a));
//printf("%d\n",LOBYTE(a)); char * b = "陈佑忠";
cout<<b<<endl;
MessageBoxA(,b,b,);
wcout<<a<<endl; int m(',');
cout<<m<<endl; test t();
t.pr(); A<float> ok(58.226);
ok.print(); return ;
}
code::blocks 初使用遇到的问题记录的更多相关文章
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
		
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
 - Code Blocks+gtest环境配置
		
本文仅介绍Code::Blocks+gtest环境配置,gtest具体使用方法请参考: 玩转Google开源C++单元测试框架Google Test系列(gtest)(总) http://www.cn ...
 - VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案
		
本篇文章转自 CSDN blog,转载请注明出处! 原文地址: http://blog.csdn.net/liquanhai/article/details/6618300 引子:竟然可以用Code: ...
 - Code Blocks中配置OpenGL方法
		
关于在Code Blocks中配置OpenGL的方法,在网上一直没有找到实用的方法,后来在马龙师兄的帮助下终于配置成功了,现把配置过程记录如下. (1)下载codeblocks,最好是带mingw的版 ...
 - 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)
		
http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code ...
 - code blocks 安装与实践
		
背景 因为不是主要修习C/C++,仅用于写算法和数据结构,code blocks轻量但是安装老是出现问题,故有此记录 安装 官方地址:http://www.codeblocks.org/downloa ...
 - 配置code::blocks的glut环境
		
code::blocks很小,特别适合小型项目及家用旧电脑上MingW下编程,当然windows还是安装的Visual Studio办公用的,现把配置过程记录一遍. 1.在百度搜code::block ...
 - EF Code First 初体验
		
Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...
 - 使用Code::blocks在windows下写网络程序
		
使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创 ...
 
随机推荐
- 在Silverlight宿主html页面添加按钮无法显示
			
在建silverlight应用程序时宿主html中嵌入的silverlight时出现的问题: 预想效果: 实际效果: silverlight填满整个page的所以无法显示html中其他的控件 解决办法 ...
 - Ruby处理二进制(未完成)
			
https://practicingruby.com/articles/binary-file-formats http://stackoverflow.com/questions/16821435/ ...
 - [转]linux时间同步
			
转自:http://www.jotop.com/2012/vpsinfo_0525/439.html 美国的vps大多都是国外的时间,让我们的程序总是不适应.那么如何调整linux的时间为北京时间?修 ...
 - ios8/sdk8/xcode6/iphone6(+)适配
			
AppIcon https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Ic ...
 - ext4.1动态生成多个checkboxgroup(或者radiogroup),并且有toolbar操作、
			
转载自:http://blog.csdn.net/zhengyuechuan/article/details/9327291 前台controller代码: Ext.define('zyc.contr ...
 - 修改一行代码提升 Postgres 性能 100 倍
			
http://www.datadoghq.com/2013/08/100x-faster-postgres-performance-by-changing-1-line/ SELECT c.key, ...
 - python并行迭代
			
并行迭代:同时并行遍历两个列表 for line1,line2 in zip(line1_list, line2_list): ... 无聊,贴一段刚才的代码: import sys import s ...
 - P1230: [Usaco2008 Nov]lites 开关灯
			
嗯嗯,这是一道线段树的题,询问区间内亮着的灯的个数,我们可以把区间修改的线段树改一下,原本的求和改成若有奇数次更改则取反(总长度-亮着的灯个数),而判断是否奇数次只要数组加一个delta的值,upda ...
 - MD5值算法原理
			
MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文 ...
 - 玩耍Hibernate之缓存
			
2.在持久化层,对象分为哪些状态?分别列出来. 答:瞬时态(Transient).持久态(Persistent).脱管态(Detached). 瞬时态(Transient) 是对象是创建时,瞬时对象在 ...