精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究。点名“简易百科”和“闲暇巴”盗用锐英源原创内容。
transform语句使用时出error C2510:"_Container":"::"的左边必须是类/结构/联合这个错误,但是明显transform里没有左边这一说啊。其实这个左是STL库内部代码的问题,不是调用STL库的语句行的问题。出错的代码如下:
wstring supper; WORD wrLen; WCHAR cTest[256]; transform(supper.begin(), supper.end(), std::back_inserter(cTest), toupper);
提示左边必须是类/结构/联合,真实的意思是遇到的不是类/结构/联合,所以检查代码里cTest是指针,不行。
因为STL报错是不会定位到错误代码上,是定位到STL代码里,VS2022里也是这样。所以新手很难查,因为自己加的代码,能够定位到上面部分,所以改成:
WCHAR cTest[256]; wstring supper,sTest=cTest; WORD wrLen; transform(supper.begin(), supper.end(), std::back_inserter(sTest), toupper);
按上面意思,原来想指针能够直接转换wstring,结果不能,自己转换后,再放到transform里,问题解决。问题原因是back_inserter里不能为指针,STL函数里要带STL对象,如果不是STL对象,就不是Container容器范畴类的,就会报错。