问一个比较郁闷的问题(关于wchar_t和dynamic_cast的)
//file name:Hello.cpp
#include "Hello.h"
int wmain(int argc,wchar_t *argv[])
{
wchar_t *wsz=new wchar_t[100];
cin>>wsz; //1.error
cout<<a(wsz);
delete[] wsz;
}
int a(const wchar_t* const wsz)
{
int num=0;
wchar_t* wch;
for(wch=dynamic_cast<wchar_t*>(wsz);*wch;wch++) //2.error
{
if(*wch==L'a')
num++;
else
;
}
return num;
}
//file name:Hello.h
#include <iostream>
#include <cwchar>
using std::cout;
using std::endl;
using std::cin;
int a(const wchar_t* const);
编译后,有两处错误:
1. error C2679:e:\MyProjects\Hello\Hello.cpp(6): error C2679: 二进制“>>” : 没有找到接受“<未知>”类型的右操作数的运算符(或没有可接受的转换)
2. error C2680:e:\MyProjects\Hello\Hello.cpp(15): error C2680: “wchar_t *” : dynamic_cast 的目标类型无效
有如下问题:
1.wchar_t* 字符串应该怎么输入和输出;
2.第二处错误谁来解释一下;
请各位高手帮忙解决,Thanks