VC7(VS2002)调试时 std::string 超过15字符乱码问题

简介: VC7(VS2002)调试时 std::string 超过15字符乱码问题

VC7(VS2002)调试时 std::string 超过15字符乱码问题


VC8(VS2005)无此问题。


std::string str = "1234567890123456";        
const char* p    = str.c_str();

调试时:str的值是乱码,p是正确值。


可能是VS2002的bug,根源可能是:

std::string 不超过15字符保存在_Bx.Buf中,否则保证在_Bx.Ptr中。

调试时VC7总是读取的_Bx.Buf。


相关文章
|
6月前
Properties转换成Map Map转Properties以及读取Properties乱码解决String转
Properties转换成Map Map转Properties以及读取Properties乱码解决String转
197 0
|
6月前
|
存储 C++ 索引
C++ string容器-字符存取讲解
C++ string容器-字符存取讲解
85 0
|
6月前
|
存储 安全 API
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
263 2
|
6月前
|
C++
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
79 0
|
3月前
|
存储 Java 编译器
String能存储多少个字符
String能存储多少个字符
|
3月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
40 0
|
5月前
|
安全 C++
C++一分钟之-字符串处理:std::string
【6月更文挑战第25天】`std::string`是C++文本处理的核心,存在于`<string>`库中。它支持初始化、访问、连接、查找、替换等操作。常见问题包括空指针解引用、越界访问和不当内存管理。要安全使用,确保字符串初始化,用`at()`检查边界,用`.empty()`检查空字符串,且无需手动释放内存。高效技巧包括预先分配内存、利用互转函数以及使用迭代器。记得正确比较和遍历字符串以保证代码效率和安全性。
71 5
|
6月前
|
存储 Java 编译器
String能存储多少个字符?
这篇内容讨论了Java中String的长度限制。编译时,如果字符串长度大于等于65535,编译器将报错。这是由于`CONSTANT_Utf8`常量池项的长度字段是16位无符号整数,最大值为65535。而在运行时,虽然理论上String的最大长度是2^31-1,但实际长度受限于JVM内存,最大可能占用约2GB内存,超过可能导致OutOfMemoryError。JDK9以后,对于LATIN1字符的字符串,存储优化使用byte数组,节省内存。
334 1
String能存储多少个字符?
|
6月前
|
存储 缓存 Java
|
5月前
|
Java
最大的 String 字符长度是多少?
最大的 String 字符长度是多少?

热门文章

最新文章