行计数 C++

2024-04-05

我正在处理程序中的逻辑行数,省略注释和黑线。计数线正在工作,但我不知道如何省略注释行,我尝试

if (line == "//")
{
    comment++;
}

但它只检查以以下开头的行"//"如果旁边有文本,则不会将其视为注释行:/

最后当我知道总行数和总注释行数时,我会减去totalLines-commentLines了解真正的程序行数。

有人可以帮我弄这个吗?

谢谢

#include <iostream>
#include <fstream>
#include <istream>
using namespace std;

int main()
{
    int numlines = 0;
    int comment = 0;
    string line;

    ifstream myfile("wr.cpp");
    while (myfile.good())
    {
        getline(myfile, line);
        if (line == "//")
        {
            comment++;
        }
        if (line == "/**/")
        {
            comment++;
        }
        ++numlines;
    }
    cout << "Number of lines: " << numlines << endl;
    cout << "Number of comment lines: " << comment << endl;
    return 0;
}

我认为你的方法是......有缺陷的。

考虑这样的一行:

int x = 1;    // starting from 1 because [some reason]

正如您的代码现在所显示的那样,它仅算作非注释行。正如您所描述的那样,它仅算作注释行。

实际上, tThis 包含代码和注释,因此您通常希望将其计为代码and评论,而不仅仅是其中之一。

做好这项工作绝对不是一件小事。您遇到的明显问题是:

  1. 包含看起来像注释的内容的字符串
  2. 行延续
  3. trigraphs
    • 可以隐藏续行
    • 可以创建错误的注释分隔符
  4. 多行C风格注释
  5. #ifs, #ifdefs, etc.

可能还有更多的问题(尽管这正是我立即想到的),但这些应该足以至少给出一个总体的感觉。

底线:我认为要在这方面(完全)走得更远,你至少需要一个相当完整/准确的C++ 词法分析器 https://stackoverflow.com/a/7051822/179910。您可能不需要完整的解析器,但我认为任何不使用完整的 C++ 词法分析器的尝试几乎肯定会失败,而且可能会非常严重且非常频繁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

行计数 C++ 的相关文章

  • 我应该把 try/catch 和“using”语句放在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 try catch using 正确的语法 https stackoverflow com questions 4590490 try catch using right syntax 我想try c
  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • SQL Server“未找到网络路径”在不同环境中随机且不频繁地发生

    类似 如果不是同一个问题 随机遇到网络路径未找到异常 https stackoverflow com questions 38696448 network path not found exception encountered rando

随机推荐

  • 使用 p/invoke 和 win-api 监控音频线路输入 (C#)

    在过去的几天里 我试图编写一个小程序来使用 win api winmm dll 来监视音频线路输入 我可以 pinvoke api 函数 例如 waveInOpen 但我不知道如何使用这些函数来实现我的目标 问题是 有人可以简单地告诉我如何
  • 动画 UITextView 时打字

    我试图拥有一个可变高度的 UITextView 它可以更改大小以适应其内容 但是当尺寸更改动画中的框架发生变化时 UITextView 中不会捕获一两次击键 动画持续时间为 0 1 秒 通常当您打字速度相当快时 它只会漏掉一个字母 然而 当
  • Python:相对导入是否意味着您无法单独执行子包?

    我最近将我的 Python 项目移植到 Python 3 1 上运行 为此 我必须在项目的子模块和子包中采用相对导入的策略 我没有这样做 现在项目本身可以工作 但我注意到我无法执行其中的任何子包或子模块 如果我尝试 我会收到 builtin
  • Highcharts 有“趋势线”功能吗?

    基本上 我试图让 Highcharts 自动绘制从第一个数据点到最后一个数据点的直线 以便我可以更轻松地看到 总体趋势 我相信这被称为 趋势线 或其他东西 但我在文档中没有找到与之相关的任何内容 不过 它很可能仍然具有此功能 可以 据我所知
  • iPhone - 保存 URL,无需 setURL:forKey: 和 NSURL

    无论如何 是否可以使用 NSUserDefaults 保存没有 setURL forKey 的 URL 这仅适用于 iOS 4 0 及更高版本 我使用 fileURLWithPath 在本地加载 HTML 文件 它从介绍页面开始 用户可以点
  • 如何从 onPress on Alert 函数调用方法 [React-Native]

    如何从 onPress on Alert 函数调用方法 React Native
  • java中特定货币的货币符号的位置

    我知道如何使用 locale 和 NumberFormat 类获取 java 中货币的货币对象和其他详细信息 但我无法在 API 中找到任何内容来了解 货币符号是在开始还是结束时显示 例如 在美国 10 表示 10 美元 其中 位于数字开头
  • 如何在 Trigger.io 上禁用“ipad 兼容性”?

    我需要我的应用程序只能在 iPhone 上运行 而不能在 iPAD 上运行 这个要怎么设置呢 我们在平台 v1 4 16 中提供了对此的支持 http docs trigger io en v1 4 release notes html v
  • 我可以检测 Android 设备上是否存在“LED 通知”吗?

    背景 我有一个带有通知的应用程序 我想支持 LED 通知 并且它运行良好 在我的偏好中 我允许用户自定义 LED 通知 问题 如果设备不支持 LED 自定义选项 我不想显示这些选项 因为这可能会让用户感到困惑 如果您拥有的只是廉价的 And
  • 为嵌套的 ScriptableObjects 构建编辑器以在纸牌游戏中组合能力

    我正在构建一款纸牌游戏 我希望有一个干净的纸牌能力架构 我有一个带有卡片属性的 CardData ScriptableObject 我希望卡牌能力组合在一起来描述卡牌的作用 比如一张名为绘制和治疗卡抽 2 张牌并在玩时恢复 5 点生命值 我
  • 类型稳定性如何让 Julia 如此之快?

    我听说类型稳定性使 Julia 如此之快 同时仍然与其他解释语言 例如 Python 一样具有表达能力 类型稳定性允许编译器在编译时直接根据输入类型确定函数的输出类型 因为 Julia 专门针对每种输入类型进行编译 这意味着如果所有函数都是
  • HtmlUnit无法获取IFRAME添加的js/ajax

    我刚刚开始学习htmlunit http htmlunit sourceforge net by gargoylesoftware 我有一个问题 页面上有一个 iframe 单击按钮后会出现该 iframe 当我尝试按名称获取此 ifram
  • 使用 MockMVC 测试 Spring MVC 请求参数映射和 MultipartFile

    我正在尝试使用 Spring MVC 3 2 创建一个 RESTful 控制器端点来上传文件以及该文件的元数据映射 定义如下 Controller RequestMapping file public class FileServiceCo
  • 如何在scala中使用相对路径读取文本文件

    我有一个用 scala 编写的简单 mvn 项目 我想访问一个文本文件并读取其内容 该代码工作正常 但唯一的问题是我在读取文本文件时给出了绝对路径 以下是我的项目的目录结构 如何使用相对路径来读取该文件 我是否必须将 movie txt 文
  • Service 或 IntentService 或 AlarmManager 方法

    我正在构建一个类似游戏的应用程序 并且我一直在阅读有关在后台 前台 警报等中使用服务运行事物的所有不同方法 我有点困惑 我的应用程序会像这样 示例 用户按下 Main 中的按钮 然后他可以关闭应用程序 30 分钟后 Activity1 打开
  • Azure JWT 具有属性“hasgroups=true”而不是组属性对象

    我有一个带有 Azure Active Directory 身份验证的 Azure Web 应用程序 使用 adal Angular 制作 在我设置的应用程序清单中 groupMembershipClaims SecurityGroup 奇
  • Neo4j:传统索引和自动索引与新标签库模式索引

    我目前正在寻找索引数据的最佳方法 从我的角度来看 有以下三个选项 1 遗留索引 索引管理器 API 2 自动索引 neo4j properties node auto indexing true ode keys indexable nam
  • 如何使用 Head 和 Tail 打印文件的特定行

    我想说输出文件的第 5 10 行 作为传入的参数 我怎样才能使用head and tail去做这个 where firstline 2 and lastline 3 and filename 1 运行它应该如下所示 lines sh fil
  • RNetlogo 和 NetLogo 5.3 错误

    我一直在 NetLogo 5 2 1 中使用 RNetLogo 没有出现任何问题 现在我使用 NetLogo 5 3 并收到此错误 gt library RNetLogo gt nl path lt Applications NetLogo
  • 行计数 C++

    我正在处理程序中的逻辑行数 省略注释和黑线 计数线正在工作 但我不知道如何省略注释行 我尝试 if line comment 但它只检查以以下开头的行 如果旁边有文本 则不会将其视为注释行 最后当我知道总行数和总注释行数时 我会减去tota