首页 > 后端开发 > C++ > 正文

如何在 C 中的 stringstream、string 和 char* 之间安全地转换?

Susan Sarandon
发布: 2024-11-14 17:31:02
原创
197 人浏览过

How to Safely Convert Between stringstream, string, and char* in C  ?

浏览 stringstream、string 和 char* 转换

在 C 中处理字符串时,程序员在 stringstream、string 之间转换时经常会遇到混乱和 char*。本文深入探讨了这些转换的复杂性,澄清了误解并提供了实用的解决方案。

理解 stringstream.str().c_str()

症结所在问题的关键在于理解 stringstream.str().c_str() 返回的字符串的生命周期。这个临时字符串对象在表达式末尾被销毁,使得从它获得的任何指针(如 const char* cstr2)无效。

解决混乱

到解决此问题,请避免将 stringstream.str().c_str() 直接分配给 const char*。相反,在另一个字符串对象中创建临时字符串的副本,然后从中获取 C 字符串:

const std::string tmp = stringstream.str();
const char* cstr = tmp.c_str();
登录后复制

或者,通过在表达式中使用临时字符串来限制临时字符串的生命周期:

use_c_str( stringstream.str().c_str() );
登录后复制

为了效率和清晰度,将临时值绑定到 const 引用:

{
  const std::string& tmp = stringstream.str();   
  const char* cstr = tmp.c_str();
}
登录后复制

以上是如何在 C 中的 stringstream、string 和 char* 之间安全地转换?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板