.net開發(fā):為程式碼加上行號的方法詳解
Abstract
若需要將程式碼放進(jìn)word交報(bào)告或做文件時(shí),或許我們會(huì)想將程式碼加上行號方便講解,如同博客園顯示程式碼那樣,我們該如何做呢?
Introduction
使用環(huán)境:Visual C++ 9.0 / Visual Studio 2008
一段C++的小程式,可以幫程式碼加上行號后輸出。
以下為引用的內(nèi)容:
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();
}
執(zhí)行結(jié)果
以下為引用的內(nèi)容:
/*
(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行
以下為引用的內(nèi)容:
while(getline(infile, line))
lines[line_num++] = line;
是整個(gè)程式的關(guān)鍵:使用map,key存放行號,value存放每一行的程式碼。而且隨著每一行程式碼的讀入,自動(dòng)增加行號。
37行
以下為引用的內(nèi)容:
for_each(lines.begin(), lines.end(), print_map());
將map內(nèi)容印出,因?yàn)閙ap無法配合copy(),只好退而求其次使用for_each()與functor。
20行
以下為引用的內(nèi)容:
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可以拿掉,只是方面在螢?zāi)伙@示而已。
Conclusion
STL的map是很好用的容器,尤其substring寫法,若index下沒有元素,會(huì)自動(dòng)新增,所以才會(huì)有l(wèi)ines[line_number++] = line;這麼漂亮的寫法。
相關(guān)文章
MVC+EasyUI+三層新聞網(wǎng)站建立 后臺(tái)登錄界面的搭建(二)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第二篇,教大家如何搭建后臺(tái)登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
.NET使用結(jié)構(gòu)體替代類提升性能優(yōu)化的技巧
這篇文章主要介紹了.NET使用結(jié)構(gòu)體替代類提升性能優(yōu)化的技巧,使用結(jié)構(gòu)體替代類有什么好處呢?在什么樣的場景需要使用結(jié)構(gòu)體來替代類呢?今天的文章為大家一一解答,需要的朋友可以參考下2022-05-05
ASP.NET中利用存儲(chǔ)過程實(shí)現(xiàn)模糊查詢
ASP.NET中利用存儲(chǔ)過程實(shí)現(xiàn)模糊查詢...2006-09-09
GridView分頁的實(shí)現(xiàn)(通用分頁模板)
要在GridView中加入AllowPaging=true,一頁數(shù)據(jù)多少行PageSize=10分頁時(shí)觸發(fā)的事件OnPageIndexChanging等等,感興趣的朋友可以了解下本文,希望對你有所幫助2013-04-04
ASP.NET Core中的響應(yīng)壓縮的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core中的響應(yīng)壓縮的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
asp.net 刪除MFC單文檔默認(rèn)菜單欄的兩種方法
新建一個(gè)MFC單文檔程序,默認(rèn)都有四個(gè)菜單欄:文件、編輯、視圖和幫助。怎么把這四個(gè)菜單欄刪除掉呢?2010-03-03
asp.net core配合vue實(shí)現(xiàn)后端驗(yàn)證碼邏輯
網(wǎng)上的前端驗(yàn)證碼邏輯總感覺不安全,驗(yàn)證碼建議還是使用后端配合驗(yàn)證。本文主要介紹了asp.net core配合vue實(shí)現(xiàn)后端驗(yàn)證碼邏輯,感興趣的可以了解一下2021-06-06

