C A L E N D A R
プロフィール
ADMIN:Kuar メール kuar☆ mail.goo.ne.jp(メッセ対応) スカイプ kuar_s HP http://sora-blue.net/~kuar/index.html mixi http://mixi.jp/show_profile.pl?id=10917408
最新記事
(08/07)
(02/21)
(01/04)
(12/23)
(04/11)
カウンター
ブログ内検索
アーカイブ
|
Cの文字列操作が難しい。理論的にはあってるはずなんだけど1~3文字ほどズレが生じる。
titleJudg = strstr(buffer2, setTitle); if(titleJudg!=NULL){ int s = strlen(titleJudg); titleDelJudg = strlen(titleJudg) - strlen(setTitle) - strlen(endTitle); while(1){ titleStr[i] = titleJudg[i+7]; if(i==titleDelJudg){ titleStr[i]='\0'; i=0; break; } i++; } OutputDebugString(titleStr); } ちなみに titleJudg = "<title>日本語</title>"; setTitle = "<title>"; endTitle = "</title>"; 何してるかってーと見てのとおりタグの除去作業。 ”文字列の削除”とか”何文字目から何文字目までを抜き出す”とかいう関数が見つからなかったので仕方なしにごり押しでがんばっているわけだが読み込むテキストによりズレがまちまち。 PR
やっとエンコーディングができた。原因はバイナリでないのにrbとしていたのでここで死んだ。
bomはC/C++では関係なかった。 これでようやく進んだ。この時点でようやく先日いってたのが役立つのな。 さて特定の文字列を取り出す作業へ駒を進めるぞ
本日の進展:UNICODEならば読み込むことができるようになった。
しかし問題のUTF-8ってのは厄介なものでbomという ・UTF同士の判別 ・Unicodeで記述されているかどうかを自動判定する ために書き込まれるらしいものがくっついている。 んでc++に限らず他の言語でも読み込もうとするとこのBOMがエンコードの邪魔をしてしまうらしい。 以下のコードでは文字化けする。どうにかしてBOMを無視するかプログラム側で削除できれば解決。こいつは厄介だ。 FILE *fp; fp = fopen("tes.txt", "rb, ccs=UTF-8"); wchar_t buffer[BUFFER_SIZE]; if(fp){ // 1行ずつ読み込み while(fgetws(buffer,BUFFER_SIZE,fp)){} } else{ MessageBox(NULL,"ファイルオープンエラー\n",NULL,MB_OK); }
ググってはみたものの直接URLからソースを読み込むコードは見つからなかった。
それらしいものはあったが動かず。もしくはかなり複雑な処理で俺の手には負えなかった。 一番手ごろだったのがURLからDLするコードがあったので一定時間ごとにrssをDLしてそのxmlを読み込むというのが最も近い動きをするのではなかろうか。 んで必要なものはタイトルとURLなので<title></title><link></link>内のテキストだけ回収すればいい。 しかしrssが基本的にはUTF-8で書かれているので標準のfopenでは文字化けが生じる。 MultiByteToWideCharやWideCharToMultiByteを試してみたものの文字化けがどうにもならなかった。
そろそろ大学から借りていた本の締め切りがせまってきたのでObjective-cを消化することに。
サンプルがRSS Readerってことで50~80行くらい打ち込んだわけだがほとんどのコードが使いまわしで実質30行くらいしかないんじゃないかと。 んでRSS Readerすげー。対象となるURL打ち込んだら最近の10件のブログタイトルとそのURLが表示される。 これだ。 これデスクトップマスコットに組み込んでやれば結構いいものになりそうだが C/C++が簡単にできるわけねーよな。うん。 Objective-cってのはデフォルトでURL対応してるようだしVBのときもURLの型が存在していたがGDIはそんなもの存在しないわけだ。 まずRSSを読むためにはネットに接続することが最低限必要。 必要ならxmlたるものを読み込まなければならない。 なかなかハードルが高そうだ。 |
CopyRight (c) のなちす All Right Reserevd. |