【问题标题】:Reading series of chars without arrays or strings读取不带数组或字符串的字符系列
【发布时间】:2023-04-09 06:38:01
【问题描述】:

我正在努力解决程序中的一个问题。对于输入,我给出了由 3 个大写字母组成的 ID,例如 ABC。 问题是我必须以某种方式读取它们而不使用<iostream> 以外的任何其他头文件,并且我不能使用string 或任何数组类型,例如char[]string[]。如何阅读多个字母的系列?我可以以某种方式将它们分成三个字符吗?

ID是后面实现列表需要的——三个字母是一个特定列表的ID,还会有其他列表,程序基本上都要对它们进行一些操作,比如添加元素,合并等等

感谢您的帮助!

【问题讨论】:

  • 为什么不能使用string 或字符数组?如果不是字符数组,你想如何存储字符?
  • 所以这个ID输入。它是如何组成ABC的?一个字符串一个数组?你说你不能使用字符串或数组,但是没有这些我没有得到的 ABC 的 ID 是如何组合在一起的。
  • 任务规则中是禁止的。用户输入 ABC,但您不能在整个代码中使用字符串,也不能使用任何数组。如果您这样做,提交程序将被拒绝。
  • 有一个答案建议使用stdio。你知道这是否也被禁止?
  • 是的,不幸的是,只允许iostream

标签: c++ string input char


【解决方案1】:

奇怪的要求,但只是将它们一次读入单独的变量中。

char a = cin.get();
char b = cin.get();
char c = cin.get();

get 读取单个字符。

【讨论】:

  • 我不知道为什么,但是我的程序在我输入 S ABC 之后就结束了。它应该进入 if 语句,然后得到 3 个字母并重复循环。怎么了? do{ cin >> operation; if(operation == 'S'){ char sn1 = cin.get(); char sn2 = cin.get(); char sn3 = cin.get(); } else if(operation == 'B'){ char kr1 = cin.get(); char kr2 = cin.get(); char kr3 = cin.get(); } }while(operation == 'F');
  • @feetl0ver 我不确定,但上面代码中的错误是您将空格作为第一个字符读取,cin >> operation; 读取 S 但它不读取空格,所以您的第一次获取将读取该空间。这可能解释了为什么会出现问题。
  • 你知道如何解决这个问题,让它跳过那个空间吗?
  • 好吧,如果总是有一个空格,那么您需要做的就是添加另一个cin.get() 来读取空格(cin.ignore() 也会做同样的事情)。如果你可以有多个空间,它会稍微复杂一些,但不会太多。
【解决方案2】:

你可以使用 scanf() 或 printf() 方法。

【讨论】:

  • 你会如何在那里使用printf
猜你喜欢
  • 2013-03-20
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2019-05-31
  • 2018-07-24
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多