`
rollstone
  • 浏览: 38863 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++中string对象的大小

 
阅读更多
《C++Primer》里说了:
string类型支持长度可变的字符串。C++标准库将负责管理与相关的内存,以及提供各种有用的操作。

由此可见,string类型的大小应该是动态可变的,不够的时候可能会扩增,扩增和max_size(),string::size_type的关系我也不是很清楚。

string里有max_size()方法可以查看string对象可以保持的最大字符数。
size()方法和length()方法等效,返回string对象所保持的字符数。
// comparing size, length, capacity and max_size
#include <iostream>
using namespace std;

int main ()
{
  string str ("Test string");
  cout << "size: " << str.size() << "\n";
  cout << "length: " << str.length() << "\n";
  cout << "capacity: " << str.capacity() << "\n";
  cout << "max_size: " << str.max_size() << "\n";
  return 0;
}
输出:
size: 11
length: 11
capacity: 11
max_size: 1073741820

这个max_size大概等于1G。
这个结果和c++reference不一样,特别是capacity的值,不太理解,不知道为什么。
我是用g++编译的。
http://www.cplusplus.com/reference/string/string/max_size/




string里size()函数返回的是string::size_type类型。
<<c++primer>>里说:
我们不知道string::size_type的确切类型,但是可以知道是unsigned类型的。
可以用代码测试:
#include<iostream>
#include<limits>
using namespace std;
int main()
{
 cout<<"max string ="
      <<numeric_limits<string::size_type> ::max()<<endl;
  cout<<"max int ="
      <<numeric_limits<int>::max()<<endl;
  cout<<"max unsigned int ="
      <<numeric_limits<unsigned int>::max()<<endl;

}
输出:
max string =4294967295
max int =2147483647
max unsigned int =4294967295


4294967295个字节,大概等于4G。
当然这是32位机器的情况。

这两个测试都没有包含  #include<string>
搜了下,发现这是个不好的习惯,不同的STL平台实现不同,还是应该加上

http://topic.csdn.net/t/20051213/12/4456074.html

查看库文件在/usr/include/c++/4.4里,就是编译器安装目录的某个文件夹里。
分享到:
评论

相关推荐

    C++实现string存取二进制数据的方法

    在将string对象中的二进制数据写回网络时,使用`c_str()`方法获取原始字符数组,并使用`length()`或`size()`方法提供数据长度: ```cpp boost::asio::write(sockClient, boost::asio::buffer(strData.c_str(), ...

    c++自定义string类

    在C++编程中,自定义`string`类是一项常见的练习,它可以帮助我们深入理解对象、内存管理和操作符重载等核心概念。以下是对这个主题的详细讲解: 首先,`string`类是C++标准库中的一个关键部分,用于处理字符串。...

    标准C++中的string类的用法总结

    ### 标准C++中的`string`类的用法总结 在C++编程语言中,`string`类是处理字符串的利器,它提供了丰富的功能,远远超过了传统的C风格字符串(即`char*`)。`string`类封装了字符串操作的所有细节,使得字符串处理变...

    深入学习C++_String2.1版

    在C++编程语言中,`std::string`是用于处理字符串的重要类,它在`&lt;string&gt;`头文件中定义。本教程"深入学习C++_String2.1版"旨在帮助开发者更全面、深入地理解`std::string`类及其在实际编程中的应用。以下是对这个...

    C++中的string类

    ### C++中的string类 #### 引言 在C++编程语言中,`string`类是一种非常实用且功能强大的工具,它为处理文本数据提供了极大的便利。与传统的`char *`字符串相比,`string`类提供了更多的内置方法来简化字符串的...

    C++string类常用函数

    ### C++ `string` 类常用函数详解 ...通过以上详细介绍,我们可以看到 `string` 类在 C++ 中的强大功能,它不仅提供了丰富的构造和操作函数,还提供了多种字符串处理功能,极大地简化了字符串的使用和管理。

    c++链表string类程序

    在C++编程语言中,`std::string` 类是一个非常重要的工具,用于处理文本字符串。这个类是标准库的一部分,提供了丰富的功能来创建、操作和管理字符串数据。在这个"链表string类程序"中,我们可以预想它可能涉及到用...

    标准c++中string类函数介绍

    ### 标准C++中String类函数介绍 在C++编程语言中,`std::string` 类是处理字符串的一种非常高效且便捷的方式。相比于传统的 `char *` 字符串,`std::string` 提供了更多的功能,并且更加安全可靠。下面我们将详细...

    c++结构体string无法用malloc分配内存

    `std::string`是C++标准库中的一个类,用于处理字符串。当我们尝试在结构体中使用`std::string`时,必须注意内存分配的方式,因为`std::string`具有动态内存管理特性。 标题中提到的问题是关于“c++结构体string...

    C++ STL string常用函数

    - `resize()`: 改变`string`对象的大小,如果新大小大于当前大小,则使用指定字符填充;如果新大小小于当前大小,则截断超出部分。 - `append()`, `+=`: 在当前`string`对象的末尾添加新的字符串内容。 - `assign()`...

    标准c++中string类函数详解

    ### 标准C++中string类函数详解 #### 概述 在标准C++中,`string` 类提供了丰富的功能来处理字符串数据。相比于传统的 C 风格字符串(即 `char *`),`string` 类更加安全且易于使用。本文将详细介绍 `string` 类中...

    C++ string类常用函数

    C++ 中的 string 类有多种构造函数,可以用不同的方式来初始化 string 对象。例如: * `string(const char *s)`: 用 C 字符串 `s` 初始化 string 对象。 * `string(int n, char c)`: 用 `n` 个字符 `c` 初始化 ...

    C++中string的详解

    ### C++中string的详解 在C++编程语言中,`string`是一个极其重要的概念,它为处理文本数据提供了丰富的功能和支持。C++标准库中提供的`std::string`类,是一个非常强大且灵活的工具,它使得字符串的创建、操作和...

    string 类及所有的方法(c++)

    例如,你可以使用.c_str()成员函数将string对象转换为C风格的字符指针,而std::strcpy或std::strncpy可以用来复制C字符串到string对象。 2.2 大小和容量函数 `size()`返回字符串的长度,`length()`与之相同。`...

    C++实现string类

    在C++编程语言中,`std::string`是标准库中的一个关键部分,它提供了对字符串操作的强大支持。然而,为了深入理解C++的机制,有时我们可能需要自定义一个`string`类来实现特定的功能或者学习如何复现内置类型的行为...

    C++程序(String的实现)

    在C++编程中,`String`的实现是一个重要的知识点,涉及到如何高效地管理字符串数据,以及如何利用面向对象编程(OOP)的思想和模板类来设计一个自定义的字符串类。这里我们将深入探讨`String`类的设计、运算符重载...

    c++string类函数原型参考.pdf

    =`,这些运算符使得我们可以比较`String`对象的大小和相等性。 7. **成员函数**: - `length()`:返回字符串的长度。 - `isempty()`:检查字符串是否为空。 - `Toupper()` 和 `Tolpper()`:将字符串转换为全大写...

    C++string类型的使用总结

    在C++编程语言中,`string` 类是一种非常重要的数据结构,用于处理文本数据。本篇总结旨在详细介绍`string` 类的构造方法、常用操作方法及其功能特性。 #### 一、`string` 类对象的构造 `string` 类提供了多种构造...

    c++string类源码

    在C++编程语言中,`std::string` 类是用于处理字符串的重要工具,它提供了丰富的功能,如创建、修改、操作和查询字符串。本篇文章将深入解析`std::string`类的一些关键知识点,特别是根据标题描述提及的拷贝构造函数...

    c++中string的用法.docx

    C++中的`std::string`类是现代C++...总的来说,`std::string`类在C++中提供了强大且安全的字符串处理功能,简化了字符串操作,并且符合C++的面向对象编程理念。理解和熟练使用`std::string`是每个C++程序员必备的技能。

Global site tag (gtag.js) - Google Analytics