前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 中的原始字符串文字及C++ 中的字符串数组(1-2)

C++ 中的原始字符串文字及C++ 中的字符串数组(1-2)

作者头像
鲸落c
发布2022-11-14 16:40:30
1.7K0
发布2022-11-14 16:40:30
举报
文章被收录于专栏:鲸落学习笔记鲸落学习笔记

theme: channing-cyan highlight: a11y-dark


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

C++ 中的原始字符串文字

在 C++ 中,为了转义像“\n”这样的字符,我们使用一个额外的“\”。从 C++ 11 开始,我们可以使用未处理转义字符(如 \n \t 或 \” )的原始字符串。原始字符串的语法是文字以 R”( 开头,以 )” 结尾

让我们看一个在 C++ 中查看原始字符串文字的示例:

代码语言:javascript
复制
// C++ 程序来演示原始字符串的工作。
#include <iostream>
using namespace std;

int main()
{
    // A Normal string
    string string1 = "juejin.\nFor.\njuejiners.\n" ;

    // A Raw string
    string string2 = R"(juejin.\nFor.\njuejiners.\n)";

    cout << string1 << endl;

    cout << string2 << endl;
    
    return 0;
}

输出:

代码语言:javascript
复制
juejin.
For.
juejiners.

juejin.\nFor.\njuejiners.\n

C++ 中的字符串数组

在 C 和 C++ 中,字符串是一维字符数组,而 C 中的字符串数组是二维字符数组。声明它们的方法有很多,这里给出了一些有用的方法。

1. 使用指针:

我们实际上通过创建一个指针数组来创建一个字符串文字数组。

C 和 C++ 都支持这一点。

代码语言:javascript
复制
#include <iostream>

int main()
{
    const char *colour[4] = { "Blue", "Red",
                            "Orange", "Yellow" };

    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";
    return 0;
}

输出

代码语言:javascript
复制
Blue
Red
Orange
Yellow
  • 字符串的数量是固定的,但不是必须的。4 可以省略,编译器将计算正确的大小。
  • 这些字符串是常量,它们的内容不能改变。因为字符串文字(字面意思是带引号的字符串)存在于内存的只读区域中,我们必须在此处指定“const”以防止可能导致程序崩溃的不需要的访问。

2. 使用二维数组:

当所有字符串的长度已知并且需要特定的内存占用时,此方法很有用。字符串的空间将在单个块中分配

这在 C 和 C++ 中都受支持。

代码语言:javascript
复制
#include <iostream>

int main()
{
    // Initialize 2D array
    char colour[4][10] = { "Blue", "Red", "Orange",
                        "Yellow" };

    // Printing Strings stored in 2D array
    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";

    return 0;
}

输出

代码语言:javascript
复制
Blue
Red
Orange
Yellow
  • 字符串的数量和字符串的大小都是固定的。同样,4 可能会被忽略,并且适当的大小将由编译器计算。但是,必须给出第二个维度(在本例中为 10),以便编译器可以选择合适的内存布局。
  • 每个字符串都可以修改,但会占用第二维给出的全部空间。每个将在内存中彼此相邻布置,并且不能改变大小。
  • 有时,需要控制内存占用,这将分配具有固定、规则布局的内存区域。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 中的原始字符串文字
  • C++ 中的字符串数组
    • 1. 使用指针:
      • 2. 使用二维数组:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档