四月 12, 2024
自用,ai生成
提前引入头文件
#include <bits/stdc++.h> cin cin是C++中处理标准输入的对象,属于iostream库。它用于从标准输入流(通常是键盘)读取数据。
cin会在等待用户输入时阻塞程序执行。具体来说,它在以下几种情况下会阻塞:
等待输入:当程序到达读取输入的语句,且标准输入中没有足够的数据时,cin会阻塞程序,等待用户输入数据并按下回车键。 输入缓冲区不空,但数据不足:如果输入缓冲区中有一部分数据,但不足以满足当前读取操作的需要,cin同样会阻塞,等待更多输入。 cin用作布尔表达式时,能够反映输入操作的状态:
当输入成功时,cin表达为true。 如果遇到输入结束(EOF),或者输入类型与变量类型不匹配(例如,尝试将字母读入整型变量),cin会表达为false。 cin, 作为C++标准库中的输入流对象,可以用来读取多种基本数据类型,以及一些库中定义的复合类型。这里列出了cin可以直接使用的一些常见数据类型:
基本数据类型
整数类型:int, short, long, long long,以及它们的无符号版本 unsigned int, unsigned short, unsigned long, unsigned long long。 浮点数类型:float, double, long double。 字符类型:char,以及unsigned char和signed char。 布尔类型:bool。 复合类型
字符串:std::string。读取时,cin将会读取并忽略任何前导空格(包括空格、换行符等),然后读取字符直到下一个空白字符为止。 对于大多数基本数据类型(如int、double、char等),cin使用>>操作符读取数据时,会自动跳过任何前导的空白字符,包括空格、制表符和换行符。这意味着如果输入缓冲区的开始是空白字符,cin >>会忽略它们,直到找到第一个非空白字符,并从那里开始读取输入。
getchar() getchar()函数会从输入流中读取下一个字符,并且这个字符会被消耗掉,即它会从输入流中移除,不再可用于后续的输入操作。这意味着一旦getchar()读取了一个字符,这个字符就不会再出现在输入流中,无论是cin、scanf还是其他任何读取标准输入的函数,都无法再次访问到这个字符。
getline() std::getline() 是 C++ 标准库中的一个函数,它用于从输入流中读取一行文本。std::getline() 主要与 std::istream 类型(如 std::cin、文件流等)一起使用,能够从给定的输入流中读取数据直到遇到换行符('\n'),并将读取的内容(不包括换行符)存储到一个 std::string 或其他字符序列中。
std::getline() 有几个重载版本,最常用的两个版本的签名如下:
从标准输入流读取:
std::istream& getline(std::istream& is, std::string& str, char delim = '\n'); is: 输入流(如 std::cin 或文件输入流)。 str: 存储从输入流中读取的行的字符串。 delim: 可选参数,指定作为行结束符的字符,默认是换行符 '\n'。函数会读取数据直到遇到此字符为止。 从字符串流读取(属于 <sstream> 头文件):
继续阅读