
應當是很基本的東西,但老是記不起來…基礎果然沒打好啊
local variables-->stack
initialized global variable-->
data memory ( .data segment in gcc )
initlaized static variable -->
data memoryuninitialized global variable-->
data memory ( .BSS( Block start by Symbol) segment in gcc )
uninitlaized static variable -->
data memoryregister variable-->
registerzxlin 發表在 痞客邦 留言(0) 人氣(824)
延續上一篇。學妹在 while 迴圈中,想透過輸入的方式取得檔案名稱,利用一個 ifstream 物件重覆的開啟關閉,但是第二次迴圈就會開啟檔案失敗。程式碼如下:
ifstream ifs; string filename, buffer; for (;;) {
cin >> filename;
ifs.open(filename.c_str());
if (ifs.fail()) {
// fail
}
while (ifs >> buffer) {
// do something
}
ifs.close();
}
|
|
解決方法很解單。因為在 while (ifs >> buffer) 這段結束之後,ifs 物件的 failbit 就被設成 1 了。因此重新開啟時無論如何都會失敗。要重覆使用 ifs 物件,就要在重覆使用之前將狀態旗標清掉就行了。參考下面程式碼:
zxlin 發表在 痞客邦 留言(0) 人氣(233)
晚上對門實驗室的學妹問了一段 code,跑出了意料外的結果。這段 code 簡化如下:
ifstream infile("test.txt");
string foo;
do {
ifs >> foo;
cout << foo << endl;
}while (!ifs.eof()); |
看似簡單的一段 code,其實就圍繞在 operator>> 之上。假設 test.txt 檔案如下:
This is a test string.
|
zxlin 發表在 痞客邦 留言(0) 人氣(1,138)
前陣子不知道看著什麼文章,好像是 moto 學園吧,看到了討論自由軟體的文章。
從 moto 又看到了自由軟體交流網,發現了不少自己沒注意的好東西,
像是 Code::Blocks + MinGW ,PDF Creator 等等好東西。
當試著用了 Code::Blocks 之後,才發現這真的是個好到不能再好的自由軟體了。
它可以搭配好幾種的編譯器,像是 Microsoft Visual C++ Toolkit 2003
zxlin 發表在 痞客邦 留言(4) 人氣(282)