c++ 输入篇

cin

>> 运算符

cin 默认情况下会跳过空格、制表符和换行符等空白字符,以便从输入中提取非空白字符。

#include <iostream>
using namespace std;

int main() {
    char x;
    if (cin >> x) {
        cout << "Input successful. x = " << x << endl;
    }
    else {
        if (cin.eof()) {
            cout << "End of input reached." << endl;
        }
        else {
            cout << "Input failed for some other reason." << endl;
        }
    }

}
// 64 位输出请用 printf("%lld")

 输入:

空格换行1

输出:

Input successful. x = 1

输入:

换行空格c1

输出:

Input successful. x = c

类型不匹配时

a.类型无法强转:cin>>x返回值为false,cin.eof()返回值为false.

#include <iostream>

using namespace std;

int main() {
    int x;
    if (cin >> x) {
        cout << "Input successful. x = " << x << endl;
    }
    else {
        if (cin.eof()) {
            cout << "End of input reached." << endl;
        }
        else {
            cout << "Input failed for some other reason." << endl;
        }
    }

}
// 64 位输出请用 printf("%lld")

输入:

c1

输出:

Input failed for some other reason.

b.类型可以强转 

输入:

1.56

输出:

Input successful. x = 1 

 超出范围最大值时,cin>>x值为false,cin.eof()值为false

输入:

2147483648

输出: 

Input failed for some other reason.

 在输入时,Ctrl+CCtrl+Z 的功能:

  1. Ctrl+C:在Windows系统中,Ctrl+C 通常用于中断正在运行的程序或终止当前任务。当你按下 Ctrl+C 键时,它会发送中断信号给正在运行的程序,以终止它的执行。这通常是用于停止程序的主要方法。

  2. Ctrl+Z:在Windows系统中,当你执行 cin >> x 并在输入中按下 Ctrl+Z 键时,这通常表示输入的结束(End of File,EOF)。在这种情况下,cin 会认为没有更多的输入可用,因此它将停止等待输入并将状态设置为 EOF。同时cin 会将 x 的值保持不变,不会将任何值存储在 x 中。你可以检查 cin 的状态来确定输入是否成功完成。cin>>x值为false,cin.eof()值为true

输入:

^Z

输出:

End of input reached. 

get函数

签名为:istream& get(char& c)

当使用 cin.get函数时,你可以用来从标准输入流中读取单个字符(包括空格、制表符、换行符),并将它存储在字符变量 c 中。下面是一个简单的示例:  

#include <iostream>

int main() {
    char ch;

    std::cout << "请输入一个字符: ";
    std::cin.get(ch); // 从输入中读取一个字符并存储到变量 ch 中

    if (std::cin) {
        std::cout << "你输入的字符是: " << ch << "-----"<<std::endl;
    }
    else {
        std::cout << "无效的输入。" << std::endl;
        if (std::cin.eof())
            std::cout << "cin状态为eof" << std::endl;
    }

    return 0;
}

输入:

空格1

输出:

你输入的字符是: 空格-----

输入:

换行

输出:

你输入的字符是:换行-----

输入:

^Z

输出:

无效的输入。
cin状态为eof

getline函数

签名为:istream& getline(istream& is, string& str, char delim);
这个函数用于从输入流 is(通常是 cin 或其他输入流对象)中读取一行文本,并将结果存储在字符串 str 中。delim 参数是可选的,它指定了行的终止字符,通常是换行字符 ('\n')。以下是一个演示如何使用 getline 函数的示例: 

#include <iostream>
#include <string>

int main() {
    std::string line;

    std::cout << "请输入一行文本: ";
    if (getline(std::cin, line)) {
        std::cout << "你输入的行是: " << line << std::endl;
    }
    else {
        if (std::cin.eof()) {
            std::cout << "输入结束。" << std::endl;
        }
        else {
            std::cout << "发生错误或输入失败。" << std::endl;
        }
    }

    return 0;
}

输入:

空格空格Tabfdf1

输出:

你输入的行是:

空格空格制表符fdf1

getline 函数会跳过换行字符 ('\n'),所以,如果你输入了一个空行(只按下 Enter 键),str将保存一个空字符串,而不包含回车字符。因此,str 的长度将为0。

#include <iostream>
#include <string>

int main() {
    std::string line;

    std::cout << "请输入一行文本: ";
    if (getline(std::cin, line)) {
        std::cout << "你输入的行是: " << line << std::endl;
        std::cout << "line[0]的ascii值为:" << (int)line[0] << std::endl;
        std::cout << "长度为: " << line.length() << std::endl;
    }
    else {
        if (std::cin.eof()) {
            std::cout << "输入结束。" << std::endl;
        }
        else {
            std::cout << "发生错误或输入失败。" << std::endl;
        }
    }

    return 0;
}

输入:

换行

输出:

你输入的行是:
line[0]的ascii值为:0
长度为: 0 

 输入ctrl+z时要单独一行,否则乱码

输入:

1^Z换行换行

输出:

你输入的行是: 1⸮
line[1]的ascii值为:26
长度为: 2

输入:

^Z

输出:

输入结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值