力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

用类用习惯了,直接用C函数操作char*感觉有些不方便。所以用的更多的是std::string/std::wstring.

设想这样一种情形:
有个模块需要封装给其他用户使用,接口中需要处理字符串类型。

那么采用std::string或者std::wstring是否合适呢?

----------------------------------------------
一直以来没有在意这个问题,但注意到有很多种string的实现类,比如MFC的CString,BSTR之类的。另外在使用第三方的SDK中亦有各种 X String。
除去历史因素(哪个时候std::string还没诞生...),为啥不直接用std::string或者std::wstring?

-----------------------
答案之一版本问题。
STL的实现在每个版本的C++ runtime lib中的实现可能是不同的。
比如在用VC10写的程序调用VC9编译的Lib。遇到std::string,采用的是当前版本的stl::string。运行时,就有可能产生异常。

---------------------------------------------
前不久的问题CLR和multi-targeting,便是由于string引起的。解决方法如下:

-------------------------------------------------------------------------

posted on 2011-04-02 14:18 力为 阅读(2533) 评论(2)  编辑 收藏 引用 所属分类: 4. C++ FAQ

评论

# re: std::string与API 2011-04-02 16:52 小笨象
还是char*是王道啊。全部通杀。
再接口实现的内部进行转换也容易。
所以,接口,如果无特别要求,char*.  回复  更多评论
  

# re: std::string与API[未登录] 2011-04-03 11:24 by
做一个接口的字符串结构

struct INTERFACE_STRING
{
char * ptr;
size_t len;
};  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理