繁体   English   中英

使用`std :: cin`将4个字符从用户中读取到字符数组中

[英]Reading exactly 4 characters from user, using `std::cin`, into a character array

我想从用户读取4个字符,使用std::cin进入字符数组,如果输入超过4个字符则显示错误。

所以我考虑创建一个长度为4的char数组并执行以下操作:

char input[4] = "";
std::cin >> input;

但是如何检查他是否输入超过4个字符? 如果他输入超过4个字符, input[4]后会不会覆盖内存input[4]

你可以使用std :: string;

std::string s;
std::getline(std::cin, s);

if(s.size() != 4)
{
    //ERROR
}

可能解决方案

您可以使用字符串来实现此目的。

码:

std::string input = "";
std::getline(std::cin,input);

if(input.size() > 4)
    std::cout << "Error";

一种方法是使用cin.get(),如下所示:

char input[4];
for (int i = 0; i < 4; ++i)
{
    cin.get(input[i]);
}

值得一提的是,如果你不需要使用C风格的字符串,更优雅的方法是使用std :: string:

std::string input = "";
for (int i = 0; i < 4; ++i)
{
    input += cin.get();
}

使用std::string的另一种方法是使用

std::basic_istream& std::basic_istream::get( char_type* s, std::streamsize count )

重载,然后丢弃输入流的其余部分并清除其错误标志,如:

#include <iostream>
#include <limits>

int main()
{
    const std::size_t buf_size = 5;
    char buf[buf_size];
    std::cin.get(buf, buf_size); // reads buf_size-1 chars from std::cin and adds a '\0'

    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    std::cin.clear();
    std::cout << buf << std::endl;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM