VS2010中文字符串输出到文件正常,输出到控制台是乱码

在VS2010下用C++编程,从一个中英文混合的文件中读取到string中,将这个string输出到文件中查看,正常显示;但输出到控制台:cout<<str<<endl;... 在VS2010下用C++编程,从一个中英文混合的文件中读取到string中,将这个string输出到文件中查看,正常显示;但输出到控制台:cout << str << endl; 就显示乱码,请问这是怎么回事?是不是需要设置VS的什么属性(项目属性的字符集已设置为多字节) 展开
 我来答
unmmnuk7
2014-06-09 · TA获得超过158个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:158万
展开全部
头文件
#include <iostream>

using namespace std;

/*
定义一个"商品"CProduct类, 该类
有4个私有成员变量:
Id 商品编号 字符串
name 商品名称 字符串
price 商品价格 整形
number 库存量 整形
6个公有成员函数:
setId ---将商品的编号设置为给定的值
setName ---将商品的名称设置为给定的值
setPrice ---将商品的价格设置为给定的值
setNumber ---将商品的库存量设置为给定的值
printInfo ---打印出商品的编号,名称,价格和库存信息
sale ---根据本次销售的商品个数,输出应付金额,将库存做相应的减少 */
class CProduct
{
char Id[20],name[20];//商品Id号和名称
int price,number; //商品价格和库存数
public:
//CProduct();
void setId(char *p){strcpy(Id,p);}
void setname(char *n){strcpy(name,n);}
void setprice(int p){price=p;}
void setnumber(int nu){number=nu;}
void printInfo(){cout<<"ID号"<<Id<<' '<<"名称:"<<name<<' '<<"价格:"<<price<<' '<<"库存量:"<<number;}
void sale(int n){cout<<"本次应付金额:"<<n*price;number-=n;}
//~CProduct(){delete p;delete n;cout<<"已销毁!";}
};
主程序
#include "CProduct.h"

int main(int argc, char *argv[])
{
CProduct pro;

pro.setId("杂货01");
pro.setname("肥皂");
pro.setprice(3);
pro.setnumber(20);
pro.printInfo();
pro.sale(4);
pro.printInfo();

system("PAUSE");
return 0;
}
追问
在代码中手动赋值是可以输出中文的,如string str ("呵呵"); cout << str << endl;但如果是从文件中读入的,好像就会有问题,对const char*也是如此。而且C++中没有必要再用char*吧,它没有什么地方比得上string的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式