跳至正文
View Categories

2 min read

主要内容 #

1. 一般的输出 #

前面,我们已经讲过了字符串的输出。

char str[] = "apple";
std::cout << str << std::endl;   // 输出字符串

对于字符串的输出,还可以通过循环来处理。

2. 循环输出 #

小练习:
请定义一个字符串 “Hello Dashima!”,然后分别使用 while 和 for,输出字符串。
这个字符串的长度为 14

/*
    请完成后,查看示例程序




*/

示例代码:

#include < iostream >
using namespace std;

int main()
{
    char dashima[] = "Hello Dashima!";

    // while
    int i(0);
    cout << "Using while: " << endl;
    while (i < 14)
        cout << dashima[i++];
    cout << endl << endl;

    // for 1 
    cout << "Using for 1: " << endl;
    for (int j = 0; j < 14; j++)
        cout << dashima[j];
    cout << endl << endl;

    // for 2
    cout << "Using for 2: " << endl;
    for (int j = 0; j < 14; )
        cout << dashima[j++];
    cout << endl << endl;

    return 0;
}

上面的代码,使用了一个关键的前提条件,就是字符串的长度是 14 。而这是可以从题目中得到的。

4. 字符串的长度 #

下面,假如我们不能够直接使用“字符串的长度为 15 ”这个条件,要怎么做呢?

当然,首要问题就是,我们怎么从字符串本身,推导出来字符串的长度?请试一试。
提示:sizeof()

#include < iostream >
using namespace std;

int main()
{
    char dashima[] = "Hello Dashima!";

    int size = /* 请补全代码 */;

    cout << "size is " << size << endl;

    return 0;
}

示例代码:

#include < iostream >
using namespace std;

int main()
{
    char dashima[] = "Hello Dashima!";

    int size = sizeof(dashima) / sizeof(dashima[0]) - 1;

    cout << "size is " << size << endl;

    return 0;
}

说明:
下面的是字符串“Hello Dashima!”的表格形式,这里第五位的 32 是空格的十进制 ACSII 码值。

// 表示的是一个字符的大小
sizeof(dashima[0]);  

// 相当于
sizeof('H');  

// 相当于
sizeof(char);

求得一个字符的大小后,再来求一下字符串的总体大小。

// 表示的是字符串的总体大小
sizeof(dashima);

那么,两者相除,自然就可以得到字符串的长度。所以

// 字符串中的元素数量
int size = sizeof(dashima) / sizeof(dashima[0]) - 1;

为什么还需要减一呢?因为真实情况的字符串样子,是这样的:

最后一位,存在一个(/0)。注意

  • C++ 中,每个字符串的的结尾,必须包含一个(/0)。
  • 这个(/0)也是一个十进制 ACSII 码值,它是ASCII表的第一个字符,表示空。

    下面再给出 ASCII 表,方便大家查找。

    最后,请试一下,用新学习的方法,改写 2.循环输出 中的代码。

    完成后,请参考下面代码。

    4.1 使用 while #

    #include < iostream >
    using namespace std;
    
    int main()
    {
        char dashima[] = "Hello Dashima!";
        int size = sizeof(dashima) / sizeof(dashima[0]) - 1;
    
        // while
        int i(0);
        cout << "Using while: " << endl;
        while (i < size)
            cout << dashima[i++];
    
        return 0;
    }

    4.2 使用 for #

    #include < iostream >
    using namespace std;
    
    int main()
    {
        char dashima[] = "Hello Dashima!";
        int size = sizeof(dashima) / sizeof(dashima[0]) - 1;
    
        // for 1 
        cout << "Using for 1: " << endl;
        for (int j = 0; j < size; j++)
            cout << dashima[j];
        cout << endl << endl;
    
        // for 2
        cout << "Using for 2: " << endl;
        for (int j = 0; j < size; )
            cout << dashima[j++];
        cout << endl << endl;
    
        return 0;
    }

    习题 #

    课后练习