《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里,就是编译器安装目录的某个文件夹里。
分享到:
相关推荐
在将string对象中的二进制数据写回网络时,使用`c_str()`方法获取原始字符数组,并使用`length()`或`size()`方法提供数据长度: ```cpp boost::asio::write(sockClient, boost::asio::buffer(strData.c_str(), ...
在C++编程中,自定义`string`类是一项常见的练习,它可以帮助我们深入理解对象、内存管理和操作符重载等核心概念。以下是对这个主题的详细讲解: 首先,`string`类是C++标准库中的一个关键部分,用于处理字符串。...
### 标准C++中的`string`类的用法总结 在C++编程语言中,`string`类是处理字符串的利器,它提供了丰富的功能,远远超过了传统的C风格字符串(即`char*`)。`string`类封装了字符串操作的所有细节,使得字符串处理变...
在C++编程语言中,`std::string`是用于处理字符串的重要类,它在`<string>`头文件中定义。本教程"深入学习C++_String2.1版"旨在帮助开发者更全面、深入地理解`std::string`类及其在实际编程中的应用。以下是对这个...
### C++中的string类 #### 引言 在C++编程语言中,`string`类是一种非常实用且功能强大的工具,它为处理文本数据提供了极大的便利。与传统的`char *`字符串相比,`string`类提供了更多的内置方法来简化字符串的...
### C++ `string` 类常用函数详解 ...通过以上详细介绍,我们可以看到 `string` 类在 C++ 中的强大功能,它不仅提供了丰富的构造和操作函数,还提供了多种字符串处理功能,极大地简化了字符串的使用和管理。
在C++编程语言中,`std::string` 类是一个非常重要的工具,用于处理文本字符串。这个类是标准库的一部分,提供了丰富的功能来创建、操作和管理字符串数据。在这个"链表string类程序"中,我们可以预想它可能涉及到用...
### 标准C++中String类函数介绍 在C++编程语言中,`std::string` 类是处理字符串的一种非常高效且便捷的方式。相比于传统的 `char *` 字符串,`std::string` 提供了更多的功能,并且更加安全可靠。下面我们将详细...
`std::string`是C++标准库中的一个类,用于处理字符串。当我们尝试在结构体中使用`std::string`时,必须注意内存分配的方式,因为`std::string`具有动态内存管理特性。 标题中提到的问题是关于“c++结构体string...
- `resize()`: 改变`string`对象的大小,如果新大小大于当前大小,则使用指定字符填充;如果新大小小于当前大小,则截断超出部分。 - `append()`, `+=`: 在当前`string`对象的末尾添加新的字符串内容。 - `assign()`...
### 标准C++中string类函数详解 #### 概述 在标准C++中,`string` 类提供了丰富的功能来处理字符串数据。相比于传统的 C 风格字符串(即 `char *`),`string` 类更加安全且易于使用。本文将详细介绍 `string` 类中...
C++ 中的 string 类有多种构造函数,可以用不同的方式来初始化 string 对象。例如: * `string(const char *s)`: 用 C 字符串 `s` 初始化 string 对象。 * `string(int n, char c)`: 用 `n` 个字符 `c` 初始化 ...
例如,你可以使用.c_str()成员函数将string对象转换为C风格的字符指针,而std::strcpy或std::strncpy可以用来复制C字符串到string对象。 2.2 大小和容量函数 `size()`返回字符串的长度,`length()`与之相同。`...
在C++编程语言中,`std::string`是标准库中的一个关键部分,它提供了对字符串操作的强大支持。然而,为了深入理解C++的机制,有时我们可能需要自定义一个`string`类来实现特定的功能或者学习如何复现内置类型的行为...
在C++编程中,`String`的实现是一个重要的知识点,涉及到如何高效地管理字符串数据,以及如何利用面向对象编程(OOP)的思想和模板类来设计一个自定义的字符串类。这里我们将深入探讨`String`类的设计、运算符重载...
=`,这些运算符使得我们可以比较`String`对象的大小和相等性。 7. **成员函数**: - `length()`:返回字符串的长度。 - `isempty()`:检查字符串是否为空。 - `Toupper()` 和 `Tolpper()`:将字符串转换为全大写...
在C++编程语言中,`string` 类是一种非常重要的数据结构,用于处理文本数据。本篇总结旨在详细介绍`string` 类的构造方法、常用操作方法及其功能特性。 #### 一、`string` 类对象的构造 `string` 类提供了多种构造...
在C++编程语言中,`std::string` 类是用于处理字符串的重要工具,它提供了丰富的功能,如创建、修改、操作和查询字符串。本篇文章将深入解析`std::string`类的一些关键知识点,特别是根据标题描述提及的拷贝构造函数...
C++中的`std::string`类是现代C++...总的来说,`std::string`类在C++中提供了强大且安全的字符串处理功能,简化了字符串操作,并且符合C++的面向对象编程理念。理解和熟练使用`std::string`是每个C++程序员必备的技能。