- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个家庭作业,我需要创建一个过滤器来删除 cin 开头和结尾的空行。显然开始很容易,但我在结束时难住了。我想使用动态数组,但这是不允许的...
这是练习文本:
In this exercise develop a filter that removes empty lines existing at the beginning of cin and at the end of cin. A line is not empty if it contains at least one non-blank character. If an empty line contains blank characters then those characters can be ignored when writing that empty line to the standard output stream.
Caveats: we haven't covered arrays of undetermined sizes yet, so you can't store lines in an array, and you're not supposed to adopt the Perl approach, where you first read in the full file, and then process what you've got. Using a std::string variable is OK, but that variable may never contain more than one line read from the standard input.
我完全不知道你怎么知道最后是一个空行而不知道还有什么输入。如果能给我指明正确方向的任何帮助或提示,我将不胜感激。
我有第二个较小的问题。它说的是文件,但这是否意味着它只需要使用输入文件?截至目前,我只能让它适用于手动输入(通过某些特殊字符组合结束输入)或仅扫描新行(仅适用于文件)。有没有办法在两种情况下以相同的方式结束扫描? (我只是在使用 while 循环 atm)
虽然我们正在做这件事,但我对措辞有点困惑。只包含空白字符的行应该被打印,还是被视为空白行并被跳过?
提前致谢!
最佳答案
由于这是家庭作业,我会建议算法但不提供代码(那样会失去练习的意义)。
开头和结尾的空行必须去掉,但中间的空行必须保留。您只能缓存一行输入。想一想:你需要缓存一个空行来打印吗?或者你可以打印这样一行(或许多这样的行)而不缓存它们吗?在一个或多个空行之后必然会发生什么?
如果这些提示对您来说还不够,这里是算法:
从
cin
中一次读取一行。如果它不为空,则打印它。如果它是空的,请记住您遇到了一个空行。继续阅读,只要连续的行是空白的,就继续递增空白行计数器。最终,您将遇到一个非空的孤单或 EOF。如果是 EOF,则简单地结束。如果是非空行,则输出counter
空行,并重置counter
。
关于另一个问题:C++ 将文件抽象为输入(或输出)的流。流以到达 EOF(文件结尾)结束。 std::cin
只是一个特定的流(从 std::istream
子类化),std::ifstream
也是。您也永远不知道 std::cin
是来自键盘还是来自文件(例如使用 shell 重定向),您也不应该关心。只需将您的代码写入流接口(interface)即可。请注意, 也可以在交互式输入上发送 EOF;例如在 Linux 中,它是通过按 Ctrl+D 来完成的。
关于C++如何去除输入末尾的空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998746/
我想用 python 读取串行端口,并用 readline 打印结果,但我在所有结果行之间得到空行。你能告诉我如何删除所有空行吗? 我的代码: #!/usr/bin/python import ser
我正在编写一个程序,该程序存储用户输入的数字,但如果输入空白则退出。 我尝试将其设为字符数组并检查长度。如果长度大于0,则表示有输入,因此它将存储输入。如果长度为0,则表示没有输入,因此退出循环。 d
这个项目要求我通过取出所有注释、空行、额外的空格和括号中的信息来读取处理中的文件,然后将其打印到output.txt中。我在处理数据和删除所有注释、空行、额外的空格和括号中的信息时遇到了麻烦。 这是我
有没有办法从服务器响应中删除空行?我已经尝试过: trimSpaces true 和 这没有正确解决问题,因为在 init param 方法中它甚至删除了
你好, if('\t' == input [0] ||'\v' == input [0] ||'\r' == input [0] ||'\n' == input [0] || '\0' == in
我不知道如何用语言来解释这个场景。所以我在写例子: 我有一个名为 tblType 的表: type_id | type_name --------------------- 1 |
代码如下: <?php /* *读取文件内容至字符串中,同时去除换行、行首行尾空格。 */ header("Content-type: text/html; chars
我正在将行与两个文本文件的行进行比较,ref.txt (引用)和 log.txt .但是我想忽略任一文件中的任意数量的空行;我怎样才能做到这一点? ref.txt one two three end
关于删除jtable中未使用的行的问题我正在使用DefualtTableModel我的表已经有一些数据并且当我更新它时将一些列留空以稍后更新主题,以便它们是空列..我想在保存数据之前用按钮删除主题..
我看到列表,它有适量的行(根据 QStringList 中的元素数量),但行是空的。 我做错了什么? 在 C++ 中我的代码是: QStringList s; s.append("1"); s.app
我怎样才能从这些行中隐藏 UITableView 的行,什么是不使用的。例如,看截图: 我可以只显示 4 行并隐藏其他未使用的行吗?所以,我只显示 4 行,然后是白屏,而不是现在的行 最佳答案 喜欢将
对于我的 bash/html 中的 CGI,我有这个脚本(只是 awk 脚本,其余代码只是一个简单的 hmtl 代码): for fn in /var/www/cgi-bin/LPAR_MAP/*;
一直在尝试使用输出 html 方法转换 xml 文档,以便使用 xsl 样式表(使用 CSS)在浏览器中显示。想显示以下代码 Source A Co
我想在我的 LOG 语句之后添加一个空行,以使我的日志更加分隔和可读。 我该怎么做? 当前声明: LOGGER.info("Person's name is {} .", person.getNa
我正在执行以下假脱机语句: SET VERIFY OFF SET FEEDBACK OFF SET HEADING OFF SET TRIMSPOOL ON SET TERM OFF SPOOL &p
包含五个相关字段的表格; ID (Autoincrement,unique, etc) ID_customer - ties in each row to another table with cus
我有这样的风格: #cytoscape-container { width: 100%; height: 100%; margin: 0 aut
while((fscanf(datafile, " %127[^;] %[^\n]", name, movie)) == 2) { printf("%s\n", movi
我有这个two commands获取 SID 用户帐户 wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" >
我使用这段代码: window.removeDuplicateLines = function() { "use strict"; var bodyText = $('#text-area')
我是一名优秀的程序员,十分优秀!