ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

关于getline()函数,在char和string输入的区别

2023-11-18 09:57:09  阅读:45  来源: 互联网

标签:


getline() 函数在 C++ 中用于从输入流中读取字符串。该函数有多种用法,但最常见的两种形式是:
从文件或键盘读取字符串:
cpp
复制
char buffer[100];  
getline(cin, buffer, 100);  
这里,cin 是输入流,buffer 是一个字符数组,100 表示读取的最大字符数。读取到的字符串将存储在 buffer 数组中。
从文件或键盘读取字符串,直到遇到定界符或到达最大输入限制:
cpp
复制
string line;  
getline(cin, line, '$');  
这里,cin 是输入流,line 是存储字符串的变量,'$$' 是定界符。读取到的字符串将存储在 line 变量中,直到遇到定界符 '$$'。
对于 char 和 string 类型的输入,getline() 函数有一些区别:
对于 char 类型的输入,getline() 函数会在读取到字符数组容量(或最大输入限制)时停止读取,而不考虑是否遇到了定界符。然后它会将读取到的字符复制到字符数组中,并在字符串末尾添加一个空字符 '\0'。这样可以确保字符数组表示一个正确格式的字符串。
对于 string 类型的输入,getline() 函数会在读取到定界符或到达最大输入限制时停止读取。它不会自动添加空字符 '\0',因此字符串结尾可能不是一个有效的 C++ 字符串。如果你需要在 string 末尾添加空字符,可以使用 string 类的 append() 方法:
cpp
复制
string line;  
getline(cin, line, '$');  
line.append(1, '\0'); // 添加空字符  
需要注意的是,当使用 getline() 函数从文件中读取字符串时,如果文件以二进制模式打开,那么读取到的字符可能不是可见字符。在这种情况下,需要确保文件包含可识别的定界符,以便 getline() 函数能够正确停止读取。
此外,getline() 函数在读取过程中遇到定界符时会将定界符读取到字符串中,但在输入结束后的第一个定界符会被确认并抛弃,第二个定界符才开始新的一行读取。这一点在处理多行输入时需要特别注意。

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有