这个VC6下的语句在vs2010里怎么改?

ProgrammingRing 2015-07-27 07:11:46
typedef vector<byte> B;
func (const B& cm)
{
wstring wstr((PWSTR)cm.begin(), (PWSTR)cm.end()); // 这个是原来VC6工程里的代码,在vs2010中无法编译通过,请问该怎么改?
......
}
我Cpp很菜,平常用c,我尝试改成下面这样
wstring wstr((PWSTR)&cm[0], (PWSTR)&cm[cm.size() - 2]);
可是程序运行结果不对…求指教
...全文
138 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cobra_chen 2015-07-28
  • 打赏
  • 举报
回复
这也太随便了吧。 直接把byte(单字节)往wchar_t(两个字节)的类型上赋值。 不知道楼主要什么样的效果。 下面的代码会自动转换。
    vector<char> ss;
    ss.push_back('a');
    ss.push_back('b');
    ss.push_back('c');

    wstring s(ss.begin(), ss.end());
    wcout<<"wstr="<<s<<endl;
ProgrammingRing 2015-07-28
  • 打赏
  • 举报
回复
引用 1 楼 cobra_chen 的回复:
这也太随便了吧。 直接把byte(单字节)往wchar_t(两个字节)的类型上赋值。 不知道楼主要什么样的效果。 下面的代码会自动转换。
    vector<char> ss;
    ss.push_back('a');
    ss.push_back('b');
    ss.push_back('c');

    wstring s(ss.begin(), ss.end());
    wcout<<"wstr="<<s<<endl;
额,vector里存的是从别处接收的宽字符, 并不是单字节数据. 暂时用下面的方法解决了,不知有无什么不妥, 先用着吧. if (!cm.empty()) { wstr.resize(cm.size() / 2); memcpy(&wstr[0], &cm[0], cm.size()); }

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧