`
fireDragonpzy
  • 浏览: 463110 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

“tr”和字符串类型的string str = "tr"对比

c++ 
阅读更多
本文为firedragonpzy原创,转载务必在明显处注明:
转载自【Softeware MyZone】原文链接: http://www.firedragonpzy.com.cn/index.php/archives/1025


 今天在研究sizeof的时候发现了一些比较有趣的现象,代码如下:
        string str = "tr";
	cout<<str.size()<<endl;//2
	cout<<strlen(str.c_str())<<endl;//2
	cout<<sizeof(str)<<endl;//32
	cout<<str[1]<<endl;//r
	//cout<<"tr".size()<<endl;//报错
	cout<<strlen("tr")<<endl;//2
	cout<<sizeof("tr")<<endl;//3
	cout<<"tr"[2]<<endl;空白
事实表明,str和"tr"是不一样的,str是个string类型的对象,占据32位byte的空间,而"tr"是char类型的数组,末尾均以"\0"填充,而string类型的str是不以"\0"填充,这个是被string类型处理了。一个str和"tr"很明显的区别就是"tr"根本就没有size()的方法。
再说下sizeof和strlen的区别:
sizeof:取得是实际变量占据的内存空间
strlen:取得是除去"\0"后变量占据的内存空间

有关sizeof详细可参考:http://firedragonpzy.d3.tuidc.com/index.php/archives/1015
分享到:
评论

相关推荐

    C# char[]与string byte[]与string之间的转换详解

    1、char[]与string之间的转换 //string 转换成 Char[] string str=hello; char[] arr=str.ToCharArray(); //Char[] 转换成 string string str1 = new ...//string 转换成 byte[] (字符串是用哪种编码生成的byte[]

    C#之CLR内存字符串常量池(string)

    C#中的string是比特殊的类,说引用类型,但不存在堆里面,而且String str=new String(“HelloWorld”)这样的重装也说没有的。 我们先来看一个方法: class Program { static void Main(string[] args) { String s...

    python字符串str和字节数组相互转化方法

    实例如下: # bytes object b = bexample # str object s = example ...以上这篇python字符串str和字节数组相互转化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多

    es6 字符串String的扩展(实例讲解)

    新特性:模板字符串 传统字符串 let name = Jacky; let occupation = doctor;...对比两段拼接的代码,模板字符串使得我们不再需要反复使用双引号(或者单引号)了;而是改用反引号标识符(`),插入

    Java中string字符串和char字符之间的千丝万缕

    以上内容详细介绍了Java中String字符串和char字符之间的转换和拼接操作,包括它们的基本概念、转换方法和拼接技巧。在实际编程中,这些操作是非常常见的,理解和掌握这些知识点对于编写高效、灵活的Java代码至关重要...

    JavaScript字符串处理(String对象)详解

    定义字符串(String)对象 JavaScript String 对象用于处理文本字符串。创建 String 对象语法如下: ...第二种是调用 String 函数,将转换参数 str 为原始字符串字符串并返回。第三种是定义一个字符串

    Java学习笔记(六)–字符串String类

    【字符串String类】 在Java编程语言中,字符串是不可变的对象,它们被当作类`String`的实例来处理。`String`类位于`java.lang`包中,这意味着它总是自动导入,无需显式引入。字符串的创建和操作是Java编程的基础,...

    js中string和number类型互转换技巧(分享)

    string类型 *1 即可变成 number类型 2、number–&gt;string number类型 +’‘ 即可变成 string 类型 [removed] function screenInfo() { var str = '012.8372'; var s = 0; str = str * 1; alert&#40;...

    C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换

    本文将详细探讨如何在字符串(string)、内存流(MemoryStream)和比特数组(byte[])之间进行转换,这对于数据存储、网络传输或者序列化/反序列化等场景非常有用。 1. **字符串转比特数组**: - `System.Text.Encoding....

    浅析string类字符串和C风格字符串之间的区别

    在C++编程中,字符串处理是一个重要的组成部分,它涉及到C风格字符串和C++标准库中的`std::string`类。这两种字符串类型虽然都是用来表示文本数据,但它们在特性和使用方式上存在显著的差异。 首先,C风格字符串是...

    浅谈javascript中字符串String与数组Array

    简单点就是string是字符(串)… 而array是数组…可以放数字啊,字符啊等一系列东东!!! 上个示例: 代码如下: var str = “liuzhanqi”; [removed](str[“length”]);//等价str.l ength  var str = string....

    JS 对象(Object)和字符串(String)互转方法

    利用原生JSON对象,将对象转为字符串 var jsObj = {}; jsObj.testArray = [1,2,3,4,5]; jsObj.name = 'CSS3'; jsObj.date = '8 May, 2011'; var str = JSON.stringify(jsObj); alert&#40;str&#41;; 从JSON字符串...

    Javascript里的String原来不能用双引号括起来.jpg

    在JavaScript编程语言中,字符串是用于处理文本的一种基本数据类型。字符串可以使用单引号('')或双引号("")创建,但在某些特定情况下,如果字符串内部包含与外部使用的相同类型的引号,则需要采取特殊措施来避免语法...

    C++如何通过ostringstream实现任意类型转string

    再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便。后来去网上找了一下,发现有一个好方法: 代码如下:#include &lt;iostream&gt;#include &lt;sstream&gt;#...

    C字符串与C++中string的区别详解

    以下是C字符串和C++中string的区别:  C字符串 string对象(C++)所需的头文件名称 &lt;string&gt;或&lt;string&gt; &lt;string&gt;或&lt;string&gt;需要头文件 原因 为了使用字符串函数 为了使用string类声明 方式 char name[20]; ...

    String字符串截取的四种方式总结

    `split()` 方法也是 `String` 类的一个方法,它根据提供的正则表达式将字符串分割成多个子字符串,并返回一个字符串数组。在示例中,同样用逗号作为分隔符: ```java String str = "java,javac,javae"; String[]...

    QString和char以及string之间的赋值详解

    一、QString赋值给char*  例如: QString qstr;... string str2(str);//这样便把str中的值传给了str2 三 、char* 赋值给QString  例如:char *str1;  QString str2;  str2 += str1;//这样便把s

    js中字符替换函数String.replace()使用技巧

    在JavaScript中,`String.prototype.replace()` 是一个非常重要的字符串方法,用于在字符串中查找匹配的模式(可以是正则表达式或子字符串)并替换它们。这个方法的使用技巧广泛,能够实现各种复杂的字符串处理需求...

    Python 文本序列类型(字符串类型 str)[学习 Python 必备基础知识][看此一篇就够了][长字符串][原始字符串 r][字符串常用方法]

    Python中的字符串(str)类型是处理文本数据的基本工具,它是不可变的序列,即一旦创建,其内容就不能被修改。在Python编程中,理解和熟练运用字符串是至关重要的,无论是进行简单的文本处理还是复杂的文本分析。 ...

    java中String类的笔试面试题含答案

    判断字符串`s`和`t`是否为重组词,即`s`的字符可以重新排列得到`t`,通常需要检查两个字符串的字符集和字符出现的次数是否相同。可以使用HashMap存储每个字符及其出现的次数,然后比较两个字符串的HashMap是否一致...

Global site tag (gtag.js) - Google Analytics