读文本文件和一些无聊的知识!

1、>>输入运算符

空白字符(如空格、换行符 \n、制表符 \t)会被输入流自动跳过,直到遇到有效的非空白字符为止,并将连续的空白字符视为单个分隔符。

2、getline()函数

用于从输入流中读取一行文本,包括空格、制表,直到遇到换行符(\n)为止,并且换行符不会被存储。

如果你想处理不同类型的分隔符,而不是默认的换行符,可以提供自定义的分隔符。例如:

getline(cin, str, ','); // 使用逗号作为分隔符 //输入注意逗号中英文保持一致

①当使用 getline 读取数据时,如果输入流为空或已到达文件的末尾(EOF,End Of File),getline 会失败,停止读取数据,并使得流的状态标志变为错误或失败状态。

  • 当你输入内容并按回车时,getline 会读取一行并显示。

  • 如果你按下 Ctrl+Z(Windows)或者 Ctrl+D(Linux/Mac)来模拟输入流的结束,getline 会返回 false,这时你可以通过检查 cin.eof() 来判断输入流是否已经结束。

  • 如果输入流发生其他错误,比如没有数据可以读取,如输入格式错误或类型不匹配,如从标准输入流读取数据并超过了缓冲区限制,cin.fail() 会被设置为 true按下 Ctrl+Z,虽然这标志着输入流的结束,但是在某些情况下(特别是 Ctrl+Z 直接在输入流中发生时),C++ 会将 EOF 信号视为 输入错误,因为程序尝试读取但未能得到有效数据,导致 cin.fail() 被触发。

cin.ignore() 默认最多忽略 numeric_limits<streamsize>::max() 个字符,直到遇到换行符或 EOF。如果输入流中有字符(例如 a),但没有换行符,程序可能没有完全忽略字符,导致程序继续处于失败状态。

更改为:

②如果在调用 getline 之前已经使用过 cin 来读取数据,可能会遇到缓冲区中残留的换行符问题。这时,最好在调用 getline 前清空输入流中的多余换行符。

调用 cin.ignore() 会忽略输入缓冲区中的第一个字符,默认情况下忽略一个字符(通常是换行符)。

3、getchar()函数

它从输入缓冲区中获取一个字符,并返回该字符的 ASCII 值(一个整数)。如果没有字符可读取,getchar() 会返回 EOF,通常表示输入的结束或错误。

  • 它不会跳过空格或换行符,每次读取的字符都包括空格和换行符。
  • 输入换行(按下 Enter 键)运行结果如下:

  • 虽然 getchar() 返回的是字符的 ASCII 值,但是在 cout 输出时,它会把这个 ASCII 值当作字符来处理并显示。cout << "该字符的 ASCII 值是: " << int(ch) << endl; // 输出 ASCII 值

  • 输入了: hello world空格TAB!! 运行结果如下:

4、文本文件——读文件

①包含头文件:#include <fstream>;

②创建流对象:ifstream ifs;

③打开文件并判断文件是否打开成功  ifs.open("文件路径",打开方式);

④读数据;

⑤关闭文件  ifs.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值