有关C++ string的c_str()函数的用法
是这样的,我现在想要把一个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]
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]
...全文
相关推荐
c++中string类成员函数c_str()的用法
下面我们将详细探讨 `c_str()` 的用法和注意事项。1.
C++ c_str()函数解析[可运行源码]
这些示例对于理解c_str()函数的用法非常有帮助,尤其是在需要与其他C语言函数相互作用时。
c++中c_str()的用法示例
在示例代码中,我们看到如下用法:```cppstring s = "1234";const char *c = s.c_str();```这里,`s.c_str()` 返回了一个指向 "1234" 字符串的指针
C++中string的用法
C++中string的用法C++中的string类是C++标准程序库中的一部分,相比于C语言中的char*字符串,它具有更多的优点,例如不需要担心内存是否足够、字符串长度等问题。
【c中string的用法】c语言string类用法.docx
资源摘要信息"C语言string类用法"c语言中的字符串是一种非常重要的数据类型,它广泛应用于各种程序中。今天,我们将详细介绍c语言中string类的用法。1.


