📜  C++ 中的 getline()函数和字符数组(1)

📅  最后修改于: 2023-12-03 15:13:58.482000             🧑  作者: Mango

C++ 中的 getline()函数和字符数组

简介

getline()函数是C++流库中的函数之一,用于从std::istream对象中读取一行文本。另外,字符数组也是C++中一个基本的数据类型,用于存储一串字符数据。

本文将介绍C++中的getline()函数和字符数组的用法及注意事项。

getline()函数的用法

getline()函数有多种使用形式,这里介绍最常用的形式:

std::getline(std::istream& is, std::string& str, char delim);

该函数的作用是从is流中读取一行文本并存储到str字符串中,遇到分隔符delim停止读取。

例如,以下代码从标准输入流中读取一行文本并输出:

#include <iostream>
#include <string>

int main()
{
    std::string line;
    std::getline(std::cin, line);
    std::cout << "Input: " << line << std::endl;
    return 0;
}

运行程序后,在控制台输入一行文本,程序将输出所输入的文本。

字符数组的用法

字符数组是C++中的一个基本数据类型,用于存储一串字符数据。在C++中,可以使用以下两种形式创建字符数组:

char arr[10]; // 静态分配,长度为10
char* p = new char[10]; // 动态分配,长度为10

静态分配的字符数组在栈区分配,生命周期随其所在函数结束而结束;动态分配的字符数组在堆区分配,需要手动释放内存。

以下是一个使用字符数组的示例程序,该程序从命令行参数中读取一个字符串并输出:

#include <iostream>

int main(int argc, char* argv[])
{
    if (argc <= 1)
    {
        std::cerr << "Usage: " << argv[0] << " <string>" << std::endl;
        return 1;
    }

    char arr[100];
    strncpy(arr, argv[1], 100);

    std::cout << arr << std::endl;
    return 0;
}

运行程序时,在命令行中输入一个字符串作为程序的第一个参数,程序将输出该字符串。

注意事项

使用getline()函数和字符数组时需要注意以下事项:

  • getline()函数将读取的文本存储到std::string对象中,而不是字符数组。如果需要使用字符数组存储读取的文本,可以使用std::stringc_str()函数将其转换为字符数组。
  • 字符数组的空间是固定的,如果读取的文本长度超过了数组长度,就会导致数组越界,造成不可预知的后果。因此,在使用字符数组存储文本时需要保证数组长度足够。
  • 当使用动态分配的字符数组时,需要手动调用delete[]释放内存,否则会造成内存泄漏。
总结

本文介绍了C++中的getline()函数和字符数组的用法及注意事项。了解了这些内容,可以更加灵活地使用C++进行字符串处理。