error C2679错误之stringstream使用
晚上在写一个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库了。
2 条评论
太好了兄弟,你怎么知道俺正在找pe文件解析的东东呢^_^ !
手头找了点资料,没来得及看呢,你这里就出来现成的东西了!
还有要几天,解析其实已经做完。关键UI这一块这么做,比较头疼。