有关C++ string的c_str()函数的用法

Richardicy Richardicy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
是这样的,我现在想要把一个uint32的数
uint32 ilength内存拷贝到一个string的前4个byte里面去,如下是正确的写法
memcpy((void *)m_pstArchiveData->c_str(), (void *)&m_iTotalLength, sizeof(UInt32));

考虑到对性能的影响,我在想每次都搞一次m_pstArchiveData->c_str()是不是效率太低了,所以我在构造函数里面
用了个
m_pstArchiveHeader = m_pstArchiveData->c_str();
来作为头指针,这样的话可以直接用这个指针而不用每次都转一遍了

结果测试下来发现不管用
memcpy((void *)m_pstArchiveHeader, (void *)&m_iTotalLength, sizeof(UInt32));.

我个人的理解是不是说string在变长以后,str的头指针可能会随时变化,所以导致每次都需要重新取一次这个头指针?

另外,头指针有没有效率比较高一点的取法,vector的头指针这样就行了, &vec[0]
但是我同样尝试了一下string也这样用就不行&m_pstArchiveData[0]
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
Richardicy
C++ 语言 65,214 成员 250,514 内容