[英]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.