.net开发:为程式码加上行号的方法详解_实用技巧

Abstract
若需要将程式码放进word交报告或做文件时,或许我们会想将程式码加上行号方便讲解,如同博客园显示程式码那样,我们该如何做呢?

Introduction

使用环境:Visual C++ 9.0 / Visual Studio 2008

一段C++的小程式,可以帮程式码加上行号后输出。
以下为引用的内容:
map_code_line.cpp / C++

复制代码 代码如下:

         /*
         (C) OOMusou 2008

         Filename    : map_code_line.cpp
         Compiler    : Visual C++ 9.0 / Visual Studio 2008
         Description : Demo how to add line number for code
         Release     : 07/18/2008 1.0
         */
         #include <iostream>
         #include <fstream>
         #include <string>
         #include <map>
         #include <algorithm>
         using namespace std;
         ifstream infile("map_code_line.cpp");
         ofstream outfile("map_code_line_r.cpp");
         struct print_map {
           void operator() (pair<int, string> p) {
             cout    << p.first << " " << p.second << endl;
             outfile << p.first << " " << p.second << endl;
           }
         };
         int main() {
           map<int, string> lines;
           string line;
           int line_num = 1;
           while(getline(infile, line))
           lines[line_num++] = line;
           infile.close();
           for_each(lines.begin(), lines.end(), print_map());
           outfile.close();
         }

执行结果
以下为引用的内容:

复制代码 代码如下:

         /*
         (C) OOMusou 2008 http://oomusou.cnblogs.com

         Filename    : map_code_line.cpp
         Compiler    : Visual C++ 9.0 / Visual Studio 2008
         Description : Demo how to add line number for code
         Release     : 07/18/2008 1.0
         */
         #include <iostream>
         #include <fstream>
         #include <string>
         #include <map>
         #include <algorithm>
         using namespace std;
         ifstream infile("map_code_line.cpp");
         ofstream outfile("map_code_line_r.cpp");
         struct print_map {
           void operator() (pair<int, string> p) {
             cout    << p.first << " " << p.second << endl;
             outfile << p.first << " " << p.second << endl;
           }
         };
         int main() {
           map<int, string> lines;
           string line;
           int line_num = 1;
           while(getline(infile, line))
           lines[line_num++] = line;
           infile.close();
           for_each(lines.begin(), lines.end(), print_map());
           outfile.close();
         }

32行
以下为引用的内容:

复制代码 代码如下:

          while(getline(infile, line))
          lines[line_num++] = line;

是整个程式的关键:使用map,key存放行号,value存放每一行的程式码。而且随着每一行程式码的读入,自动增加行号。

37行
以下为引用的内容:

复制代码 代码如下:

          for_each(lines.begin(), lines.end(), print_map());

将map内容印出,因为map无法配合copy(),只好退而求其次使用for_each()与functor。

20行

以下为引用的内容:

复制代码 代码如下:

             struct print_map {
          void operator() (pair<int, string> p) {
            cout    << p.first << " " << p.second << endl;
            outfile << p.first << " " << p.second << endl;
          }
        };

配合for_each()的functor,22行的cout可以拿掉,只是方面在萤幕显示而已。

Conclusion

STL的map是很好用的容器,尤其substring写法,若index下没有元素,会自动新增,所以才会有lines[line_number++] = line;这麽漂亮的写法。

时间: 2024-09-01 10:16:15

.net开发:为程式码加上行号的方法详解_实用技巧的相关文章

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果_实用技巧

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面

易企秀APP微信公众号发布方法详解

给各位易企秀软件的使用者们来详细的解析分享一下微信公众号发布的方法. 方法分享:     1.保存场景的二维码,以图片形式添加到图文中,群发出去. PS:此法类似电影中强行植入的广告. 2.场景链接加到阅读原文,文末通过文字巧妙引导,告知读者"点击原文". PS:此法如画龙点睛. 3.群发文字,点开是场景登录微信公众平台==>群发功能==>文字==>输入场景名称==>群发 PS:此法单刀直入,简单有效 4.点击图文直接跳转 设置方法:登录微信公众平台==>

ASP.NET微信公众号查看粉丝信息接口_实用技巧

本文实例为大家分享了ASP.NET微信粉丝信息接口查看代码,供大家参考,具体内容如下 微信Token实体类: /// <summary> /// 微信Token实体类 /// </summary> public class WeChatTokenEntity { public string Access_token { get; set; } public string Expires_in { get; set; } } 用户信息实体类 /// <summary> /

Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块完美实现_实用技巧

中午的时候发了第一篇 Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块 ,发现实现上还是有问题,有很多理解不到位的地方,晚上详细解决下了,终于实现MVC各模块按需加载了,哈皮. 上篇文章中,关于ExtJs这个玩意的评论就跟java和.Net那个好一样,既然上了贼船,就难下了,而且对于企业级的应用我个人觉得Extjs框架还是不错的,尤其是没有UI设计的团队(苦逼的程序员就兼UI吧),起码难得发现一个做的比较好的UI框架(国产的miniUI貌似看的过去,其他的就有点

asp.net通过动态加载不同CSS实现多界面_实用技巧

方法一: 复制代码 代码如下: <%@page language="C#"%> <%@import namespace="System.Data"%> <script language="c#" runat="server"> public void page_load(Object obj,EventArgs e) {   //创建服务器端控件.   //指定的标记"LINK&q

.Net语言Smobiler开发利用Gridview控件设计较复杂的表单_实用技巧

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便. 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"Smobiler Components"拖动一个GridView控件到窗体界面上 2.修改GridView控件的属性 a.load事件代码  VB: Private Sub TestGridView3_Load(senderAs Object, e As EventArgs)Handles MyBa

.NET微信公众号查看关注者接口_实用技巧

本文实例为大家分享了java获取不同路径的方法,供大家参考,具体内容如下 实体类: public class userlist { public string total { get; set; } public string count { get; set; } public userlistopenid data { get; set; } public string next_openid { get; set; } } public class userlistopenid { pub

微信服务号如何申请 微信服务号申请方法详解

给各位微信软件的用户们来详细的解析分享一下微信服务号申请的方法. 方法分享: 步骤1.首先要进入微信的公众平台官方网站,这个可以百度一下,就能找到官方网站.然后在进入官方网站后,找到"立即注册"并直接点击进入.如下图所示:   步骤2.在立即注册里面,用常用的邮箱去注册,企业的话,最好用公司邮箱去注册,这样的话,使用起来安全.资料全部输入完成后,就直接点击注册就可以了.如下图所示:   步骤3.接下来就要进行邮箱激活了,这样的话,就要进入我们的邮箱里面,找到激活邮件,直接点击激活链接.

微信号怎么注销 微信号注销方法详解

给各位微信软件的用户们来详细的解析分享一下微信号注销的方法. 方法分享: 步骤1.关于微信号怎么注销的问题,首先用想要注销的QQ号登录微信.   步骤2.点击--设置.   步骤3.点击--我的帐号.   步骤4.点击"手机号"一栏.   步骤5.点击"关闭"既可以解除微信和手机的绑定.   注销微信登录 步骤1.如果是注销微信登录,可以点击--设置.   步骤2.一直往下拉到底.   步骤3.看到退出登录按钮,点击.   步骤4.再次点击--退出登录,确定退出.