生活的天平本不平衡,只有通过努力改变其偏向。

error C2679错误之stringstream使用

2008-11-18

晚上在写一个PE文件格式解析的小程序(等完工将会放出Source,^_^),使用stringstream将一个int转成string,方便显示。

代码是类似这样(头文件和命名空间我省了):

1
2
3
4
5
int i=10;
stringstream sstream;
wstring str;
sstream << i;
str = sstream.str();

总是报这样的错误:
error C2679: 二进制“=”: 没有找到接受“std::basic_string<_Elem,_Traits,_Ax>”类型的右操作数的运算符(或没有可接受的转换)

想好了好久,一直想不出问题出在哪。Google大法也使用了,看样子我是技穷。突然看到“没有可接受的转换”会不会是由于我工程使用unicode的原因?将工程改成多字节的,F7居然给过了。原来是MBCS与Unicode相互不兼容造成的,Faint,解决方法将stringstream换成wstringstream。

Stl使用起来很方便,省去了我们对基本数据结构的组织,但需要处理好非标准库与STL之间的接合产生的一系列小问题,当然包括我今天遇到的字符集问题,好在stl已经帮我们处理好很多unicode库了。

作者:lonkil | 分类目录:本站原创编程开发 | 标签:

2 条评论

  1. shuiher 说道:

    太好了兄弟,你怎么知道俺正在找pe文件解析的东东呢^_^ !
    手头找了点资料,没来得及看呢,你这里就出来现成的东西了!