zoukankan      html  css  js  c++  java
  • 字符序列与字符数组(二)

    当我们为数组myword的元素单独赋值时:

    myword[0] = 'B';
    myword[1] = 'y';
    myword[2] = 'e';
    myword[3] = '';

    正如你可能想到的,这并不是一个实用的方法。通常给数组赋值,或更具体些,给字符序列赋值的方法是使用一些函数,例如strcpy

    strcpy (string copy) 在函数库cstring (string.h) 中被定义,可以用以下方式被调用:

    strcpy (string1, string2);

    这个函数把string2 中的内容拷贝给string1。string2 可以是一个数组,一个指针,或一个字符串常量(constant string)。因此用下面的代码可以将字符串常量"Hello"赋给mystring:

    strcpy (mystring, "Hello");  例如:

    // setting value to string
    #include <iostream>
    #include <string>

    int main () {
    char MyName [20];
    strcpy (MyName,"J. Soulie");
    cout <<MyName;
    return 0;
    J. Soulie
                         注意我们需要包括头文件才能够使用函数strcpy

    另一个给数组赋值的常用方法是直接使用输入流(cin)。在这种情况下,字符序列的值是在程序运行时由用户输入的。

    当cin 被用来输入字符序列值时,它通常与函数getline 一起使用,方法如下:

    cin.getline ( char buffer[], int length, char delimiter = ' 
    ');

    这里buffer 是用来存储输入的地址(例如一个数组名),length 是一个缓存buffer 的最大容量,而delimiter 是用来判断用户输入结束的字符,它的默认值(如果我们不写这个参数时)是换行符newline character (' ')。

    下面的例子重复输出用户在键盘上的任何输入。这个例子简单的显示了如何使用cin.getline来输入字符串:

    // cin with strings
    #include <iostream>

    int main () {
    char mybuffer [100];
    cout << "What's your name? ";


    cin.getline (mybuffer,100);


    cout << "Hello " << mybuffer << ". ";
    cout << "Which is your favourite team? ";


    cin.getline (mybuffer,100);


    cout << "I like " << mybuffer << " too. ";
    return 0;
    }

    What's your name? Juan
    Hello Juan.
    Which is your favourite team? Inter Milan
    I like Inter Milan too.

    在上面的例子中我们也可以用以下代码来读取用户输入:

    cin >> mybuffer;

    这种方法也可以工作,但它有以下局限性是cin.getline所没有的:

    • cin只能接收单独的词(而不能是完整的句子),因为这种方法以任何空白符为分隔符-表示输入结束,包括空格spaces,跳跃符tabulators,换行符newlines和回车符arriage returns。
    • cin不能给buffer指定容量,这使得程序不稳定,如果用户输入超出数组长度,输入信息会被丢失。

    因此,建议在需要用cin来为数组输入字符串时,使用cin.getline来代替cin >>。



  • 相关阅读:
    WEB测试(2)--WEB核心技术之WEB工作过程---URL
    WEB测试(1)---WEB系统架构
    linux随笔1
    .Net 下 百度 富文本框 Ueditor 的 使用
    那些年出现的遇到的 错误 VS (长期)
    C# 基础 学习 之 数据类型转换
    C# 基础 学习 之 数据类型
    C# 基础学习 之 深复制和浅复制
    设计模式 学习 之 原形模式
    设计模式学习 之 单例模式
  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3587965.html
Copyright © 2011-2022 走看看