VC2005で漢字を含むファイル名に対してfstreamを使う前にはsetlocale(LC_CTYPE, "");を
設定しないといけない.
だが, そうしてると今度は漢字を含む文字列をstd::coutに出力できない(printfだと大丈夫なので全然気がつかなかった).
最初, fstream()関数をsetlocale(LC_ALL, ""); setlocale(LC_ALL, "Japanese");で毎回挟むか?(んな馬鹿な)と思ったが
VC8のfilebufとsetlocaleに対処方法が.
でもこれだと私の環境では駄目っぽい(一見うまくいくが一行が大きいと駄目).
# cvt.max_length() == 5なんだけどy-hamigakiさんの環境では違うのかしら.
結局
/* だいたい一行に出せるバイト数 */
std::cout.rdbuf()->pubsetbuf(0, 4096);
std::setlocale(LC_ALL, "");
としてファイル名もcoutも無事扱えることを確認(一行が極端に大きいとこれも駄目なんやけど).
/* サンプル */
int main()
{
using namespace std;
cout.rdbuf()->pubsetbuf(0, 4096);
setlocale(LC_ALL, "");
printf("漢字OK1\n");
string a = "漢字OK2";
cout << a << std::endl; // OK
{ ofstream ofs(a.c_str()); } // OK
ostringstream os;
os << a;
cout << os.str() << std::endl; // OK
return 0;
}
先月の電気料金4491円. いつもは三千円前後で済ませてるが, 流石に暑すぎた.
関西にいたときはそもそも部屋にエアコンが無かったから耐えるしかなかったけどあると使っちゃうなあ.
2カ月以上前から
手の指が痛いのはどうやら腱鞘炎とかばね指なのかも.
最近ますます痛みが強くなって, キーボード打ちにくくて実に困る.
治すには「指を使わない」ことだそうだがそういうわけにもいかんし.
皆既月食…どころじゃない凄まじい雷雨.
あまりに雷が落ちるので怖くて家中のコンセントを引っこ抜いてやり過ごす.
暴力的な天気だなあ.
なんで落ちるんやと1分ほど悩んだ.
struct A{
static void func();
};
struct B : A {
void func() {
A:func();
}
};
A:はラベルになっちゃうのか.
SetFilePointer
歴史的事情は分からんでも無いが, こういう風に引き数を入力と出力で兼用する上, 例外値を設けるのを止めてくれ.
戻り値も一度読んだだけじゃわけわかめ. トラップするのが大変じゃないか.
『Short Coding』(Ozy)
熱い, 熱すぎる. 残念ながら今, 一行ずつ吟味しながら読む余裕がないのやけど, Ozyさんの魂が全面的に現れて訴えかけてくる.
blogを見てるとよく「凄いおっさん」になると出てたので勝手に40歳ぐらいかと思っていたら
30歳になられたばかりではないか. ショック.
皆でタクシー乗り継いでぐるっと回って少し東京の地理感覚に慣れる.
品川とか田町とか四谷とか. 電車で通過したことはあるけど下りたこと無かったもんなー.
class Error;
func()
{
try {
bool isFail = true;
if (isFail) Error();
} catch (Error& e) {
std::cout << e.what() << std::endl;
}
}
思い込みは恐ろしい. デバッガで見ながら何故例外が発生しないんだと30分悩んでしまった. throwを書き忘れても文法エラーじゃないのか….
メモリリークの検出,
_CrtDumpMemoryLeaks
んー, main()の先頭で
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
としておけば_CrtDumpMemoryLeaks()を明示的に呼ばなくても終了時出力ウィンドウにでる. コンソールに出したければ
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
を追加すればOK. このあたりはVC6から変わってないと思う.
乗車前に230円の切符を買い, 乗車時に乗車駅の番号が書かれた紙を受け取るタイプのバスに乗る.
初めてだったので乗り過ごさないように注意していたのに, 料金盤の表示が190円からさくっと240円に上がってる.
あれー, と思っていたらバスが山の上まで登ったあとUターンしてきた. 同時に料金表示も下がり出す!
高いとろこに行くには高い料金を払うというシステムだったわけだが, 走行距離に対して単調増加でないのは初めて.
今年は流星群がよく見えるいい位置にいると期待してたのに突然曇って雨まで降り出す.
何故ここだけ. 無念. しかし星が見えるところに来るとカシオペア座すら見えない東京の空に慣れていた自分に驚く.
for each for VC2005
すげー怪っしい.
#include <vector>
int main()
{
std::vector<int> v;
for (int i = 0; i < 10; i++) v.push_back(i);
int sum = 0;
for each (int x in v) sum += x;
printf("sum=%d\n", sum);
}
まさかvs. C++でXbyakが
勝つとは自分でもベンチマークとって驚いてたりして.
しかしこのblogってのは書きにくくてイライラするなあ. みんなどんな風にテキストを入力してるんやろか.
xbyak ver. 1.05公開. Intel Macで動作確認した.
っで,
LLSpirit行ってきました.
途中の1.5h x 2とか休憩0.5hあたりの時間配分, もうちょっと微調整したらよかったのかなあと思った.
今回はwebではいつも見てるけど会ったことの無かった人たちにお会いできてよかった.