C++ 中的字符串数组(5 种不同的创建方式3-5)

简介: STL字符串类可用于创建可变字符串数组。在这种方法中,字符串的大小不固定,可以更改字符串。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

3. 使用字符串类:


STL字符串类可用于创建可变字符串数组。在这种方法中,字符串的大小不固定,可以更改字符串。


这仅在 C++ 中受支持,因为 C 没有类。


#include <iostream>
#include <string>
int main()
{
  std::string colour[4] = { "Blue", "Red",
              "Orange", "Yellow" };
  for (int i = 0; i < 4; i++)
    std::cout << colour[i] << "\n";
}
复制代码


输出

Blue
Red
Orange
Yellow
复制代码

  • 数组的大小是固定的,但不是必须的。同样,这里的 4 可以省略,编译器会确定数组的合适大小。字符串也是可变的,允许更改它们。

4. 使用向量类:

STL 容器Vector可用于动态分配大小可变的数组。


这仅在 C++ 中可用,因为 C 没有类。请注意,此处的初始化列表语法需要支持 2011 C++ 标准的编译器,尽管您的编译器很可能会支持,但需要注意这一点。


#include <iostream>
#include <vector>
#include <string>
int main()
{
  std::vector<std::string> colour {"Blue", "Red", "Orange"};
  colour.push_back("Yellow");
  for (int i = 0; i < colour.size(); i++)
    std::cout << colour[i] << "\n";
}
复制代码


输出

Blue
Red
Orange
Yellow
复制代码

  • 向量是动态数组,允许您随时添加和删除项目。

  • 向量中可以使用任何类型或类,但给定的向量只能包含一种类型。

5.使用数组类:


STL 容器数组可用于分配固定大小的数组。它的使用方式可能与矢量非常相似,但大小始终是固定的。


这仅在 C++ 中受支持。

#include <iostream>
#include <array>
#include <string>
int main()
{
  std::array<std::string, 4> colour { "Blue", "Red", "Orange",
                  "Yellow" };
  for (int i = 0; i < 4; i++)
    std::cout << colour[i] << "\n";
  return 0;
}
复制代码


输出

Blue
Red
Orange
Yellow
复制代码

笔记:


这些绝不是制作字符串集合的唯一方法。C++ 提供了多个容器类,每个类都有不同的权衡和特性,它们的存在都是为了满足您在项目中的需求。




目录
相关文章
|
4月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
106 4
|
1天前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
16 5
|
3月前
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
108 0
|
3月前
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
4月前
|
C++
C++(十一)对象数组
本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。
|
4月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
5月前
|
算法 C++
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
51 4
|
4月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
5月前
|
C++ 索引
C++数组、vector求最大值最小值及其下标
C++数组、vector求最大值最小值及其下标
189 0
|
6月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
44 6