#
這樣利用字符串常量的方法我還是第一次見到,有點意思吧。最初的程序源自這里,那個程序中不同的字符表示putchar循環執行的次數不同,下標奇偶決定了打印!還是空格。可以根據這樣的方法構造一個打印幾種字符組成的像素圖形。
#include <cstdio>
int main()
{
int a,b,c;
for (c=b=10;a="VAMSI PERI,TFy!QJu ROo TNn(ROo)SLq SLq ULo+ UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^ NBELPeHBFHT}TnALVlBLOFAkHFOuFETp HCStHAUFAgcEAelclcn^r^r\\tZvYxXy T|S~Pn SPm SOn TNn ULo0ULo#ULo-W Hq!WFs XDt!" [b++];)
for(; a-- > 64 ; )
putchar ( ++c==90 ? c=10:33^b&1);
}
照著這樣的方法寫了個打印字符串的東西,可以按照指定長度換行。
#include <cstdio>
int main()
{
int a,b,c;
for (c=b=0;a="www.shnenglu.com/gohan this is a test"[b++];)
if(a!='\0')
putchar ( ++c==30 ? c=0,b--,10:a);
putchar(10);
}
最后這個是打印一個自己構造的ASC字符,這里構造的是我的名字
#include <cstdio>
int main()
{
int a,b,c;
for (c=0,b=0;a="@u@GFLB[@DBJDDFEDEFD@CBBDBBDBBBDBBBCBCBDBC@BBDBBBDBBBDBBBCBCBDBD@CFDDDBDBDGABDBE@v"[b++];)
for(; a-- > 64 ; )
putchar ( ++c==54 ? c=0,10:33^b&1);
}
執行效果如圖
蓋茨這周就算是正式退休了,他的一生是很令人敬仰的,M$帝國是他一手創建的,現在他光榮的離開了自己的職業生涯,在此跟他說聲Bye Bye,以后的IT領域依然會人才輩出的。周末坐火車回家了,心情比較復雜,沒能達到自己那種感覺良好的狀態,也許只能靠時間來慢慢調整。這周新買兩本閑書,躁狂抑郁多才俊還有自我,決策與判斷算是翻過去一遍了,略有些體會。三國風云的輔助程序不打算繼續做了,架子放那兒也就好了。回來隨便關注了一下HOOK輸入法事件的例子,嘗試改變輸入法最后輸出的結果,目前仍舊未遂,不過可以在輸入法輸出的基礎上加個小尾巴,用來做流氓軟件可能可以。目前有個打算是利用cppblog提供的BlogAPI搞一個博客備份的東西,練習練習。
本周收藏:
這周就現這么著吧。假期計劃籌備中。
考完試了,今天閑下來整理Delicious的書簽,發現我自己的分類實在太混亂,于是準備把所有 的tag全部刪除,結果發現Delicious中只能一個一個刪除tag,還好它提供了API接口,當然還有現成的各種語言可用的庫,于是撿來這個.Net下的Delicious庫,準備用C#隨便寫個程序批量刪除,可是突然冒出個念頭,用PowerShell試試吧。
于是這個支持裝載.Net DLL的PowerShell登場了,先裝載DLL:
[Reflection.Assembly]::LoadFile("D:\Delicious.Net.dll")
接著設定用戶名密碼
[Delicious.Connection]::Username = "cppgohan"
[Delicious.Connection]::Password = "******"
接著讀入tag
$tags = [Delicious.Tag]::Get()
接著就是foreach循環,將所有tag重命名成一個"blank",這個庫沒有提供tag刪除,用重命名可以合并tag
foreach($tag in $tags)
{
$temp = [Delicious.Tag]::Rename($tag.Name,"BLANK")
}
然后就等它執行完成吧,執行結果還ok,有幾次Rename拋出異常了,可能是這個庫不太好用。以后如果有空,還可以換用Python試一試,估計比這個PowerShell要高效許多。
這周所有的課程都結束了,多門考試已經結束,下周的三天即將面對最后三門考試,分別是微機原理,計算機安全和編譯原理。周六的六級考試的聽力接近一半都沒聽怎么懂,卷面還是一貫的亂,考試期間用掉了一小卷紙巾,結果應該不會太好吧。看來雖然能看懂那些簡單的英文文檔,聽懂那些英文視頻Demo,不過考起試來還是不行。本來打算寫一篇簡單異常處理的例子,結果看來還是要放一兩周了,這周又玩了一下那個RegexDesigner,可是他對于中文匹配不能正常的顯示,因為是開放代碼的,將臨時生成的html文件加上UTF-8編碼頭就可以正常顯示了。看到Windows Live Writer出了個twitter的插件Notify Twitter,好像用了最新的Live Writer SDK,有空我也可以寫個飯否插件或豆瓣插件的東西了,只是豆瓣的那個OAuth簽名現在還沒試過,等假期有機會研究一下吧。研究了一下VS2005的文件自定義生成規則,可以實現一些生成文件前的預處理工作等等。
感嘆于很多人都玩上了C#3.0還有WPF這些有意思的東西,我的計算機可是跑不動了,希望早點換臺電腦了。買了本Jeffrey Richter寫的CLR via C#,打算好好讀讀。
本周收藏:
這周就這樣了,去復習語法分析了。病好大半了,請各位放心,謝謝爸爸媽媽。
The following table shows the steps you might perform in a typical HTTP client application:
來源
可能周四周五著了涼,周末很長時間是在床上迷迷糊糊過去了,頭暈鼻塞嗓啞。這周只是應付幾門考試,對于C++的異常處理有一點初步學習,順便在kevinlynx的博客上學到了點C++自己寫一個容器分配對象allocator的方法。有幾周沒有寫技術學習的心得了,其實還能寫點,可能是因為浮躁的心還有那些斷斷續續的考試和作業,下周打算寫篇C++異常處理的簡單例子。學了挺長時間計算機技術,只是長進十分有限,慢慢進步吧。買了一本決策與判斷,是pongba推薦的一本心理學入門書籍,要戰勝自己心里的浮躁,靈活運用自己的思想,學一些心理學應該是有很多幫助的,何況這些東西還十分有趣。
本周收藏:
這周就回顧這些,下周還有考試,cet6第二次考,沒復習,大概是兇多吉少。休息去了。
這周忙忙碌碌發現什么都沒做,考試穿插于課程之間,考題介于無聊跟麻煩之間。只因為有考試,我才有機會在紙上寫下許多的字,字寫的少沒練過,所以寫的七零八亂很丑,看來有些退化了。這周看到dd的博客上那個標題為98753210的東西,呵呵,絕不忘記過去的教訓。這周同學幫我買了本《三體2》,用了一天的下午,另一天的晚上還有次日的凌晨讀完了,為作者所想象出的世界架構所嘆服,自個兒也體會了一些生命對于這個世界的意義,總之這本書很是精彩。上周玩了一下校內的三國風云游戲,這周寫了個定時攻擊預定目標的client,可以為每一個城鎮制定一個攻擊隊列,還是用那個chilkat庫,比較方便,別的許多都沒有做,感覺有點無為。這周技術方面的書也沒看多少,百度之星等等算法有關的學習也再沒繼續,可能有點心浮氣躁了。
本周收藏:
這周回顧很少,就這么多,明天還是放假,祝大家假期愉快。
本周進行了兩門專業課的考試,算法跟OOPwithJava,課時不多,題也就不難。編譯原理還在講語法分析,看了vczh的那個詞法分析的文章,寫的明白,用來復習鞏固再好不過。上周狀態欠佳,這周馬馬虎虎,周五弄到了那本讓我歌唱80年代,也是關乎一代人記憶的書籍,書中不少地方竟也觸動了我。弄到書回來看到小學同學QQ群的各位回憶差不多10年前的往事,有心人貼出來了當時的一些舊照片,那些記憶碎片也就變的完整了些,當時做的那些壞事,傻事,惡作劇被盡數串聯起來。
當我陷入對過去的那種懷念之時,收到了高中好友的信息,幫他完成幾個C+
+的OOP程序,于是凌晨開工,熬了一會兒,也就完事了。周六白天忙著微機原理和接口的實驗,操作那些元件挺有意思,只是我的匯編寫的太丑:P。這段時間對HTTP客戶程序有些興趣,校內網上有一個叫做三國風云的webgame,我也簡單玩了,似乎可以用軟件做一些機器人的功能,只是我對HTTP進行應用的知識似乎還是不充足,后來我找到了個商業化的HTTP組件,叫做Chilkat,發現挺好用的,沒有購買的組件編譯出程序可以使用30天,對于隨便玩玩是夠用了。現在用VC#跟這個庫做了一個可以查看指定坐標村子名稱以及資源田分布的命令行東東。
今天是6.1兒童節,不禁又想到那些苦難的孩子們,兒童節快樂。放出的圖片是10年前那個弱小的我。
本周收藏:
下周繼續面對那些個考試,去忙了。如果有朋友有學習更多HTTP編程應用的資料麻煩推薦給我,很想好好學學。
三天的哀悼日,幾乎所有的網站色調都成了灰色,而我這整整一周也如同灰色。
做了許多灰色的夢,手頭做的事物也都有點沒了動力。受到地震預測的影響,本周應該進行的考試推遲一周,周二停課一天,學習也就懈怠了。也就在這幾日,繼劉慈欣的三體之后,又看了他的幾部短片作品,幾乎每部都涉及天上的星星,有些想法甚是巧妙,和我以前的想象產生共鳴,而又比我的想象成熟具體的多了。預測地震的消息是這周一發布的,晚上許多人去操場睡了,從宿舍樓都能聽見外面嘈雜的聲音,在外面睡覺我覺得不怎么靠譜。向往在一個安靜的夜晚,靜靜躺在草地上,遙望滿天星星,隨著無限自然的想象,慢慢睡去,這樣應該挺舒服的。
這周了解了一下UTF8編碼跟漢字GB2312(C++對于漢字好像默認是這個編碼)有一些初步了解,用ATL里的CAtlHttpClient用了一下fanfou的api,需要basic授權而使用ATL提供的方式好像困難重重,感覺反而不如自己構造這些發送參數。周末學用vc++進行了一些GDI+Bitmap類對jpg,bmp的簡單處理。
一直在關注牛博網為災區做的愛心救助工作,這個苗圃行動我覺得挺靠譜的,感覺在募捐這方面,官方的紅十字會做的真的沒這些NGO做的好。周末看了幾部動畫片,螢火蟲之墓這部動畫讓我覺得有點難過,聯想起因為災難成為孤兒的孩子,要好好活著真不容易。
本周收藏:
灰色的一周就說這么多,希望下周是32位真彩色的。。下周再敘

ReadConsoleInput是一個Win32 API, 聲明如下:
BOOL ReadConsoleInput(
HANDLE hConsoleInput, //輸入句柄
PINPUT_RECORD lpBuffer, //指向INPUT_RECORD結構體(數組)的指針
DWORD nLength, //上面那個結構體的大小
LPDWORD lpNumberOfEventsRead //實際讀入輸入內容的個數
);
我把讀入的功能寫在這個助手類中,ReadConsoleInput的得到VK_CODE的方法可以看ReadKeyDown和ReadKeyPush兩個函數,它們的效果略有點不同。右圖是效果截圖,按ESC跳出循環。助手類以后還可以添加顏色控制位置控制等功能,只要你想,目的就是為了簡化API調用。
#pragma once
#include <Windows.h>
class GohanConsoleHelper
{
HANDLE _hIn;
HANDLE _hOut;
INPUT_RECORD _InRec;
DWORD _NumRead;
public:
WORD VKey;
GohanConsoleHelper(void){
_hIn = GetStdHandle(STD_INPUT_HANDLE);
_hOut = GetStdHandle(STD_OUTPUT_HANDLE);
VKey=0;
}
bool ReadOneInput()
{
return 0!=ReadConsoleInput(_hIn,&_InRec,1,&_NumRead);
}
bool ReadOneInput(INPUT_RECORD& InRec)
{
return 0!=ReadConsoleInput(_hIn,&InRec,1,&_NumRead);
}
DWORD ReadKeyDown()
{
if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
return 0;
if(_InRec.EventType!=KEY_EVENT)
return 0;
if(_InRec.Event.KeyEvent.bKeyDown > 0)
return 0;
VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
return VKey;
}
DWORD ReadKeyPush()
{
if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
return 0;
if(_InRec.EventType!=KEY_EVENT)
return 0;
if(_InRec.Event.KeyEvent.bKeyDown == 0)
return 0;
VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
return VKey;
}
public:
~GohanConsoleHelper(void){}
};
main所在文件內容
#include <windows.h>
#include <iostream>
#include "GohanConsoleHelper.h"
using namespace std;
int main()
{
GohanConsoleHelper gch;
while (true)
{
if(gch.ReadKeyPush()!=0) //使用ReadKeyDown()捕獲按鍵彈起的VK_CODE
{
if(gch.VKey != VK_ESCAPE)
cout<<"VK_CODE == "<<gch.VKey<<endl;
else {
cout<<"Bye~~"<<endl;
break;
}
}
}
return 0;
}
在命令行得到VK_CODE可以干許多事情了,可以寫個在Win32命令行下的小游戲,俄羅斯方塊啊什么的,呵呵,不過畫面稍微好點的就搞不了了,因為畢竟win32命令行分辨率太低了。
忘了放出參考的資料:
http://adrianxw.dk/ 比較全面的Win32命令行教程