Ss 类型是什么意思
What does the type Ss mean?
我已经将磁盘文件读入内存中,该数组声明如下:
char * buffer = new char [length];
然后重新解释数组:
std::string strbuf(reinterpret_cast<const char *>(buffer), length);
并立即检查提供的字符串的类型。
cout << "buffer is: " << typeid(buffer).name() << 'n';
cout << "strbuf is: " << typeid(strbuf).name() << 'n';
buffer is: Pc
strbuf is: Ss */
如您所读,字符串"strbuf"的类型为 Ss。那是什么意思?
Ss
是根据安腾ABI重整规则对std::basic_string<char, std::char_traits<char>, std::allocator<char>>
的破坏名称。
如果您在脑海中应用规则时遇到问题,可以使用c++filt
工具:
$ c++filt <<< _ZSs
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
这一行:
std::string strbuf(reinterpret_cast<const char *>(buffer), length);
这真的应该是:
std::string strbuf(buffer, length);
不将buffer
解释为字符串。它复制它。 此时strbuf
拥有自己的整个缓冲区副本。当你做delete [] buffer;
时,strbuf
仍然有自己的对象,并且仍然是一个完全有效的对象。由于string
管理自己的内存,因此您也不需要显式删除它 - 您可以让它超出范围。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?