c++的问题-C++实现命令行功能:`ls`,`cd`,`cat`, `add`, `remove`

问题描述

C++实现命令行功能:`ls`,`cd`,`cat`, `add`, `remove`

#题目 要求

Browse and modify a JSON data structure with ls,cd,cat, add, remove

#实现功能

  • Let's say we have this address entry data structure in JSON

    {
        "entries": {
            "lilei" : {
                "age": 27,
                "mobile" : "13700000000",
                "address" : "Earth somewhere"
            },
            "hanmeimei" : {
                "age": 26,
                "mobile" : "13700000001",
                "address" : "Earth somewhere else"
            }
        }
    }
    
  • start interactive command line application

    sh> ./ab

    ab> _

  • use ls command to list the items in current position

    ab> ls

    ab> entries

  • use cd command to go to the entry like go to a directory

    ab> cd entries

    ab> ls

    ab> lilei hanmeimei

  • use cat command to display th item data

    ab> cat lilei

    ab> "lilei" : { "age": 27, "mobile" : "13700000000", "address" : "Earth somewhere" }

  • use add command to add new address entry to JSON

    ab> cd entries

    ab> add

    key: xiaoming

    value: { "age": 28, "mobile" : "13700000002", "address" : "Earth somewhere too" }

    address entry added

    ab> ls

    ab> lilei hanmeimei xiaoming

    Note: the key should be identical, if trying to add duplicated key, just display an error message

  • use remove command to get one or more address entries

    ab> cd entries

    ab> remove

    please give the key: xiaoming

    xiaoming was deleted from JSON

    Note: if trying to delete an non-exist key, just display an error message

  • get help

    ab> !help

    then help message should be displayed, and when encoutering invalid command, help message
    should also be displayed.

  • quit from the application

    ab> !quit

    sh> _

时间: 2024-09-20 00:50:28

c++的问题-C++实现命令行功能:`ls`,`cd`,`cat`, `add`, `remove`的相关文章

VS2010-使用“预先生成事件命令行”和“后期生成事件命令行”功能

原文:VS2010-使用"预先生成事件命令行"和"后期生成事件命令行"功能 xcopy /r /y $(TargetPath) $(ProjectDir)..\Bin\ xcopy /r /y $(TargetDir)$(TargetName).pdb $(ProjectDir)..\Bin\ xcopy /r /y $(TargetPath) $(ProjectDir)..\Release\ xcopy /r /y $(TargetDir)$(TargetName

四个Python库,实现超实用的命令行功能

在二部曲系列文章的第二部分关于伟大的命令行 UI 终端应用文章中,我们探索了"提示工具包","命令行界面创建工具包","Pygments"和"模糊搜索". 这是我的二部曲终端应用程序与伟大的命令行界面的第二部分. 在第一篇文章中,我介绍了几个能使使用命令行程序充满乐趣的功能. 在第二部分中,我将介绍如何在几个 Python 库的帮助下实现这些功能. 在本文结尾,读者应该很好地了解如何使用 Prompt Toolkit,Clic

Linux命令行之逗趣的图文

你有没有在Linux命令行中见过一辆火车呢?"猫跟老鼠"呢?编辑Linux命令行其实并不总是件严肃古板的事情.你完全可以用它自娱自乐.下面我们就跟大家一起讨论一下Linux命令行的特质. 假设:本文所有示例都使用Ubuntu Linux.文中描述命令行功能或许在你的Linux系统中是默认的. 有趣的Linux命令行功效 1. Linux"sl"命令行 尽管"sl"代表了"蒸汽机机头",但它是用来提醒那些命令行控们别把"

手把手教你利用命令行工具创建LinuxMac系统下的网站备份

创建网站备份应该是一个网站管理员最为重要的日常工作之一.但现实情况是,备份这一步往往被很多人忽略,也就是说仍然有很多网管的网站安全意识较低. 所有的Linux/Mac用户都能够零经济成本地通过命令行工具创建网站备份.如果你用的不是Linux/Mac,请关注我们的后续文章--如何在windows上通过软件方式创建备份. 本文的初衷不是为读者提供完整的备份解决方案,而是给那些有时间并且想要学习一些基础的命令行工具进行网站备份的宝宝们一点参考. 必要条件 你的主机必须具备必要的软件及证书. (1) 服

VirtualBox命令行

一般的VirtualBox用户可能不知道那种潜伏在命令行界面(CLI)下的强大威力. 最明显的问题是"当你有一个非常棒的GUI时候 为什么还要用命令行工作?",答案就是其威力.自从1995年以来,有整整一代的计算机用户认为计算机就是一个窗口和图形的大集合,不过的确也八九不离 十.你可能会问为什么是1995?因为Windows 95的引入将人们带入了一个图形化的新时代.那个八月后的不久,FVWM95发布,这就是Linux对于Windows 95浏览器界面的回答.对我来说,似乎使用命令行的

Linux命令行之逗趣无极限

你有没有在Linux命令行中见过一辆火车呢?"猫跟老鼠"呢?编辑Linux命令行其实并不总是件严肃古板的事情.你完全可以用它自娱自乐.下面我们就跟大家一起讨论一下Linux命令行的特质. 假设:本文所有示例都使用Ubuntu Linux.文中描述命令行功能或许在你的Linux系统中是默认的. 有趣的Linux命令行功效 1. Linux"sl"命令行 尽管"sl"代表了"蒸汽机机头",但它是用来提醒那些命令行控们别把"

Oh My Zsh - 社区力量全新方式定义命令行

Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们一种全新的方式使用命令行. Oh My Zsh 什么是 Oh My Zsh Oh My Zsh 这个名字听起来就很有意思~, 它是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能. Oh My Zsh 的主页上,对它的定义有了明确的解释:http://ohmyz.sh 关于 zsh,它是一种命令行程序.我们

Gradle命令行黑魔法

毫无疑问,现在Gradle已经成为java世界最火的构建工具,风头已经盖过了冗余的ant,落后的maven.Gradle是以Groovy语言编写的一套构建脚本的DSL,由于Groovy语法的优雅,所以导致Gradle天生就有简洁.可读性强.灵活等特性. Gradle的命令行功能也非常强大.本人从maven转到Gradle,深深被gradle强大的命令行功能折服.通过命令行来实现Gradle的各种特性,就像魔法师在表演魔法一样. 日志输出. Gradle中的日期有6个层级.从高到低分别是 ERRO

《C语言及程序设计》实践参考——命令行加法器

返回:贺老师课程教学链接 [项目3 - 命令行加法器]建立项目add,设计一个用命令行能运行的加法器,其中加数的个数不定:输入:add 1 3输出 4输入:add 1 3.1 2 6输出 12.1输入:add 1 3 a 6输出:命令行中出现非法运算量![参考解答] #include <stdio.h> #include <stdlib.h> #include <ctype.h> double string_to_double(char *str); int main(