编程题:用C++实现代码自动完成

时间: 2023-12-09 10:14:11 浏览: 36
以下是一个简单的 C++ 代码自动完成程序的实现,该程序基于静态分析: ```c++ #include <iostream> #include <string> #include <vector> using namespace std; vector<string> keywords = {"int", "double", "float", "char", "string", "bool", "void"}; int main() { string code; cout << "Enter your code: "; getline(cin, code); string prefix; cout << "Enter prefix: "; getline(cin, prefix); int start = code.rfind(prefix); if (start != string::npos) { string suffix = code.substr(start + prefix.length()); for (auto keyword : keywords) { if (keyword.find(suffix) == 0) { cout << "Auto complete: " << prefix + keyword.substr(suffix.length()) << endl; } } } return 0; } ``` 这个程序的思路是,首先让用户输入他们的代码,然后让用户输入他们想要自动完成的代码片段的前缀。接下来,程序通过查找代码中最后一个出现该前缀的位置,找到该前缀后面的所有字符,然后逐个检查这些字符是否是 C++ 中的关键字。如果找到了一个匹配的关键字,程序就会自动完成剩余的代码,并将其输出到控制台。

相关推荐

任务描述 用C++编程 设计一个简单的学生类(Student) 学生类(Student): 公有数据成员:姓名(name),字符数组 公有数据成员:编号(id),整数类型,请借助totalCount自动计算学生的编号 私有数据成员:年龄(age),整数类型 静态数据成员:总人数(totalCount),整数类型,用于记录学生对象的总数 构造函数:只允许接受姓名和年龄作为参数,将其赋值给对应的成员变量,并将总人数加一 公有成员函数:displayInfo(),用于显示学生的姓名、年龄、编号和总人数,格式:name: Liam, age: 23, id: 1, totalCount: 1 要求: 输入格式:第一行输入一个整数k说明将有k个学生,第2到k+1行输入格式为:name age 输出格式:name: Liam, age: 23, id: 1, totalCount: 1 请注意每轮输入后需要将totalCount归零 题目确保姓名不会超过20个字,可以直接将name字符数组的长度设置为20,char* name = new char[20]; 样例输入: 5 Liam 23 Olivia 26 Noah 23 Emma 11 Oliver 12 样例输出: name: Liam, age: 23, id: 1, totalCount: 1 name: Olivia, age: 26, id: 2, totalCount: 2 name: Noah, age: 23, id: 3, totalCount: 3 name: Emma, age: 11, id: 4, totalCount: 4 name: Oliver, age: 12, id: 5, totalCount: 5 样例输入: 3 Ava 24 Elijah 12 Isabella 19 样例输出: name: Ava, age: 24, id: 1, totalCount: 1 name: Elijah, age: 12, id: 2, totalCount: 2 name: Isabella, age: 19, id: 3, totalCount: 3 样例输入: 4 Lucas 22 Sophia 24 Mason 12 Mia 29 样例输出: name: Lucas, age: 22, id: 1, totalCount: 1 name: Sophia, age: 24, id: 2, totalCount: 2 name: Mason, age: 12, id: 3, totalCount: 3 name: Mia, age: 29, id: 4, totalCount: 4

最新推荐

recommend-type

高质量C++、C编程指南.doc )

前 言 6 第1章 文件结构 11 1.1 版权和版本的声明 11 1.2 头文件的结构 12 1.3 定义文件的结构 13 1.4 头文件的作用 13 ...附录A :C++/C代码审查表 88 附录B :C++/C试题 93 附录C :C++/C试题的答案与评分标准 97
recommend-type

软件课程设计 试验报告 代码 演示

根据上面的流程图可以看到如果是一步一步的写程序,势必会让程序变得冗长且不易阅读,因而我想到使用循环的方法,将流程图中类似的结构体做成一个循环体来实现,使程序源代码变得十分的简洁,且容易被阅读和修改。...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

深入了解MATLAB开根号的最新研究和应用:获取开根号领域的最新动态

![matlab开根号](https://www.mathworks.com/discovery/image-segmentation/_jcr_content/mainParsys3/discoverysubsection_1185333930/mainParsys3/image_copy.adapt.full.medium.jpg/1712813808277.jpg) # 1. MATLAB开根号的理论基础 开根号运算在数学和科学计算中无处不在。在MATLAB中,开根号可以通过多种函数实现,包括`sqrt()`和`nthroot()`。`sqrt()`函数用于计算正实数的平方根,而`nt
recommend-type

react的函数组件的使用

React 的函数组件是一种简单的组件类型,用于定义无状态或者只读组件。 它们通常接受一个 props 对象作为参数并返回一个 React 元素。 函数组件的优点是代码简洁、易于测试和重用,并且它们使 React 应用程序的性能更加出色。 您可以使用函数组件来呈现简单的 UI 组件,例如按钮、菜单、标签或其他部件。 您还可以将它们与 React 中的其他组件类型(如类组件或 Hooks)结合使用,以实现更复杂的 UI 交互和功能。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

解决MATLAB开根号常见问题:提供开根号运算的解决方案

![解决MATLAB开根号常见问题:提供开根号运算的解决方案](https://img-blog.csdnimg.cn/d939d1781acc404d8c826e8af207e68f.png) # 1. MATLAB开根号运算基础** MATLAB开根号运算用于计算一个数的平方根。其语法为: ``` y = sqrt(x) ``` 其中: * `x`:要开根号的数或数组 * `y`:开根号的结果 开根号运算的输入可以是实数、复数、矩阵或数组。对于实数,开根号运算返回一个非负实数。对于复数,开根号运算返回一个复数。对于矩阵或数组,开根号运算逐元素执行,对每个元素进行开根号运算。 #
recommend-type

inputstream

Inputstream是Java中用于从输入流中读取数据的抽象类,它是Java I/O类库中的一部分。Inputstream提供了read()和read(byte[] b)等方法,可以从输入流中读取一个字节或一组字节。在Java中,FileInputStream、ByteArrayInputStream和StringBufferInputStream都是Inputstream的子类,用于读取不同类型的输入流。