如何在第一个字符输入后忽略所有内容

Posted

技术标签:

【中文标题】如何在第一个字符输入后忽略所有内容【英文标题】:How to ignore everything after the first character input 【发布时间】:2020-06-03 00:58:11 【问题描述】:

我想删除用户输入的第一个 char 之后的所有内容。 一切正常,但我正在处理边缘情况,如果用户输入例如“nfff”之类的内容,当输入“n”作为输入时和输入“f”作为输入时,将导致两个函数发生.我知道这可以使用if (str[0] == 'n') function() 解决,但我宁愿不要使用更多的内存与字符串。 有没有更有效的方法来丢弃第一个字符之后的所有内容?

【问题讨论】:

读取第一个字符,然后ignore,直到你需要再次开始关注,例如在行尾…… 如果您的目标是阅读一行文本,那么这就是std::getline 的用途。这就是它的工作。然后,如果您只想查看和检查第一个读取的字符,那么您完全可以随意进行。 您目前如何获得用户输入? 【参考方案1】:

您可以使用scanf 或getchar。

例如,

char my_char;
scanf("%c", &my_char);

所以,这将忽略第一个字符之后的所有内容。

【讨论】:

【参考方案2】:
#include <iostream>     // std::cin, std::cout
#include <fstream>      // std::ifstream

int main () 
  char str[2];

  std::cout << "Enter str ";
  std::cin.get (str,2);    // get c-string
  std::cout <<str<<std::endl;

  return 0;

使用 istream::get 来解决问题!大小为 2 将确保 str 以 null 结尾。

【讨论】:

以上是关于如何在第一个字符输入后忽略所有内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在第一个选项卡实例之后删除所有字符?

如果未捕获后的组,则在第一个捕获组后忽略空间

如何在第一个逗号后拆分第一个竖线上的字符串?

如何从不在第一个位置的任何字符串中删除所有选定的字符

jquery 验证仅验证第一个字段 - 其他字段被忽略

正则如何匹配某字符之后的内容