VS2010中文字符串输出到文件正常,输出到控制台是乱码
在VS2010下用C++编程,从一个中英文混合的文件中读取到string中,将这个string输出到文件中查看,正常显示;但输出到控制台:cout<<str<<endl;...
在VS2010下用C++编程,从一个中英文混合的文件中读取到string中,将这个string输出到文件中查看,正常显示;但输出到控制台:cout << str << endl; 就显示乱码,请问这是怎么回事?是不是需要设置VS的什么属性(项目属性的字符集已设置为多字节)
展开
1个回答
展开全部
头文件
#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;
}
#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的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询