字符串输入 getline

C++ getline函数详解
本文详细介绍了C++中getline函数的使用方法,包括其函数声明形式、参数含义及实际应用场景,帮助读者掌握如何通过getline函数读取用户输入。
      如果用string buf;来保存:
         getline( cin , buf );
      如果用char buf[ 255 ]; 来保存:

         cin.getline( buf, 255 );


      getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。

      它的函数声明形式(函数原型)如下:

          istream& getline(char line[], int size, char endchar = '\n');

三个参数:

       char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。
       int size : 最多接受几个字符?用户超过size的输入都将不被接受。

       char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。


       结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。

       char name[4];

       cin.getline(name,4,'\n');

       由于 endchar 默认已经是 '\n',所以后面那行也可以写成:
                cin.getline(name,4);
       最后需要说明的是,C++的输入输出流用起来比较方便,但速度比C要慢得多。在输入输出量巨大时,用C++很可能超时,应采用C的输入输出
### C++ 中 `getline` 函数的字符串输入 在 C++ 编程中,`getline` 是一个非常实用的函数,主要用于从输入流中读取一整行文本。它能够处理包含空格的字符串输入,这是相较于 `cin >>` 的一大优势。 #### 基本语法 `getline` 函数的基本形式如下: ```cpp std::getline(std::istream& is, std::string& str); ``` 其中: - `is`: 表示输入流对象(通常是 `std::cin`)。 - `str`: 存储读取到的数据的目标字符串变量。 如果需要指定分隔符,则可以使用带第三个参数的形式: ```cpp std::getline(std::istream& is, std::string& str, char delim); ``` 这里 `delim` 参数定义了一个自定义终止符,默认情况下为 `\n`[^1]。 #### 示例代码解析 下面通过几个具体例子来展示如何利用 `getline` 实现不同的字符串输入需求: ##### 示例 1: 使用默认换行符作为终止条件 此例展示了最基础的应用场景——获取用户的全名并打印出来。 ```cpp #include <iostream> #include <string> int main() { std::string fullName; std::cout << "Please, enter your full name: "; std::getline(std::cin, fullName); // 默认以 '\n' 结束输入 std::cout << "Hello, " << fullName << "!" << std::endl; return 0; } ``` ##### 示例 2: 自定义终止符 当希望改变默认行为时,比如直到某个特定字符才停止接收数据而非简单的回车键操作,这时就需要引入额外的一个可选参数即定界符。 ```cpp #include <iostream> #include <string> using namespace std; int main(){ const int SIZE = 50; char buffer[SIZE]; cout<<"Enter text followed by '#':"; cin.getline(buffer , SIZE ,'#'); // 设置 '#' 为结束标志 cout<<buffer ; return 0; } ``` 上述程序会一直等待用户输入直至遇见'#'[3]. ##### 示例 3: 处理多组连续行输入 有时候我们需要多次调用 `getline`, 来分别捕获几段独立的信息. ```cpp #include <iostream> #include <string> int main(){ std::string lineOne,lineTwo; std::cout << "First Line : "; std::getline(std::cin, lineOne); std::cout << "\nSecond Line :"; std::getline(std::cin, lineTwo); std::cout<<"\nYou entered:\n"<<lineOne<<"\nand\n"<<lineTwo; return 0; } ``` #### 注意事项 尽管 `getline` 功能强大,但在实际应用过程中也需要注意一些细节问题: - 如果之前有其他基于 `>>` 运算符的操作残留未消费掉的内容缓冲区里头的话,那么这些遗留物可能会影响后续 `getline` 调用的结果 [^2]. 综上所述,掌握好 `getline` 的基本原理及其变体形式可以帮助开发者更灵活地控制标准输入流程中的各种情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值