win cmd下g++编译cpp的那些坑

在Windows CMD环境下使用g++编译UTF-8编码的C++程序时,如果源码包含中文输出,会导致运行异常或跳过后续代码。Linux环境下则无此问题。解决方案是将源文件编码转换为CP936。另外,g++在Windows和Linux下处理函数传递字符串参数存在差异,Linux下必须使用.c_str(),而Windows下不加也能运行,但建议遵循标准做法。
摘要由CSDN通过智能技术生成

#这篇准备不定期长久更新,实在是win下的坑太多,做个记录方便日后查看。

#有人看到了,觉得特别不爽的热烈欢迎评论补充。

#先准备零散写,碰到什么些什么,积累多了再系统整理。

一.编码大坑

1.在win cmd下用g++直接编译编码格式为utf-8的原文件时,需要原文件中的源码里不能有中文,准确的说遇到的问题是不能cout直接输出中文。只要有中文输出,运行时就会跳过(经过测试不是跳过是因字体编码问题不显示),或者在中文输出后面有cin输入操作会直接跳过之后的所有程序。

一下给一段简单例子说明:

#include<iostream>
using namespace std;
int main()
{
    cout<<"hello world"<<endl;
    cout<<"1 pleace enter two number"<<endl;
    int a, b;
    cin>>a>>b;
    cout<<a<<" * "<<b<<" = "<<a*b<<endl;
    cout<<"你好世界!"<<endl; //这里向外输出中文
    cout<<"2 pleace enter two number"<<endl;
    cin>>a>>b;
    cout<<a<<" * "<<b<<" = &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值