[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/27 10:25 / Filesize : 239 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.40【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.39【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1182740506/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

654 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 06:07:04 ]
void型なんて変数は存在せんぞ。
void *型ならあるが。

655 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 06:48:25 ]
std::auto_ptrみたいな不良品つかわずにboost::scoped_ptr使えばいいのに

656 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 07:45:14 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4803.txt

正の整数を二つ読み込んで、その乗算をシフト演算によって行いたいのですが、プログラムがうまく動きません。
強制終了されてしまいます。

(例) 53×25=53×(2^4+2^3+2~0)=(53を左に4ビットシフト)+(53を左に3ビットシフト)+(53を左に0ビットシフト)

どこが悪いのでしょうか・・・。

657 名前:656 mailto:sage [2007/08/02(木) 07:46:01 ]
あ、2^0です。

658 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 07:58:22 ]
mainのkが未使用変数の使用であるとかって警告でなかった?
エスパーすると、divideのkがmainのkに影響を及ぼすことはないよ。

659 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 08:00:34 ]
おっと、未使用変数->未初期化変数、または、値の割り当てられていない変数

660 名前:656 mailto:sage [2007/08/02(木) 08:13:08 ]
>>658
はい、警告とかは出てないんですよ・・・。
どこをどう直せばいいでしょうか。

661 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 08:29:17 ]
ヒント:ポインタ アドレス渡し

662 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 08:37:18 ]
まずはコンパイラの警告レベルを最大にすることだな。
VC++なら/W4
bccなら-w
gccなら-Wall



663 名前:656 mailto:sage [2007/08/02(木) 08:56:45 ]
>>662
おお!そんなことができるのですね。ありがとうございます。

警告 W8013 test.c 26: 's' は、おそらく値が代入される前に使われている(関数 divide)

と出ました。どういう意味でしょうか・・・。

664 名前:656 mailto:sage [2007/08/02(木) 09:12:45 ]
>>661
ありがとうございます。kのアドレスをdevideに引き渡せばいいのですね。
そこは修正したのですが、まだダメみたいです・・・・。

665 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 09:48:28 ]
void* と char* のビット表現は等しいんだっけ?

666 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 09:52:07 ]
int s;

*k = 0;
while (no>0) {
 count[*k] = analyze(no, s); ←初期化されてないsが使われてる
 no -= (1<<count[(*k)++]);
}

667 名前:656 mailto:sage [2007/08/02(木) 09:53:38 ]
すいません、できました。
divide関数内で
*k++とかいう変なことをしてたみたいで・・・

*k += 1;

と書き換えたらできました。
ありがとうございます。

668 名前:656 mailto:sage [2007/08/02(木) 09:55:16 ]
>>666
ああなるほど、ポインタは括弧をつければよかったんですね・・・orz

sは初期化されてないからですか・・・わかりました、ありがとうございます。

669 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 10:03:19 ]
>>665
うん。

"A pointer to void shall have the same representation and alignment requirements as a pointer to a character type."
ISO C 6.2.5 Types p26

670 名前:656 mailto:sage [2007/08/02(木) 10:03:24 ]
というか、sを戻り値として返すなら、divide関数でsはいらないですね・・・。
アホだ・・・orz

671 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 15:03:47 ]
Wallにしたら標準ライブラリでさえゴルァされるから使い物にならんと思うんだけど

672 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 15:06:18 ]
>>669
d



673 名前:デフォルトの名無しさん [2007/08/02(木) 15:31:38 ]
std::vector<int> v;って宣言したときにこれのサイズを保持する型を
std::vector<int>::size_typeって宣言するのではなく
変数名vを使って宣言したいのですがなんか良い方法無いですかね?

typeof(v)::size_typeとかboost::range_size< typeof(v) >::type (←勿論通りません><)
みたいにできたらめちゃ便利だと思うんですが

674 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:03:34 ]
typeof は提案されたこともあるみたいだけどねえ。
いまんとこはできないね。

そういう場合は typedef しとくというくらいしか言えんなあ。

std::vector<int> v_t;
v_t v;
v_t::size_type i;

675 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:06:22 ]
typedef が抜けてた。まあいいや。

676 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:07:40 ]
><;

677 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:12:12 ]
<>;

678 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:13:49 ]
×;

679 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:26:34 ]
◇;

680 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:34:10 ]
チョー!

681 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:34:32 ]
BASIC スレにでも迷い込んだのかと思った

682 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:38:20 ]
CLS



683 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 16:53:10 ]
すいません。
void *型ってどんな型にも切れるただのメモリアドレスって考えれば良いのですか?


684 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:08:12 ]
お前別スレで質問してきちんとした回答貰ってるだろうが
礼儀知らずにも程がある

685 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:10:30 ]
ええ〜、してないですYo!

686 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:13:33 ]
死ね

687 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:19:25 ]
一方的に決めつけられて、死ねといわれる始末。
なんという仕打ち。

688 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:19:49 ]
「切れる」っていうのが、なんかアクロバティックな用法だなあ。
こう、「アタシは侍ザマス!」みたいな?
「void*型からunsigned long(*)(bstr_t const&, IDispatch**)型に斬ってしんぜるナリ!」みたいな?

689 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:22:55 ]
>>683
言葉の使い方は他人に通じるように

690 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:23:44 ]
>>673-674
今はdecltypeという名称になっている。

691 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:26:33 ]
>>687
同じ文体なんだから別人なら普通変えるだろ。バカかよ

692 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:27:25 ]
不毛



693 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:31:11 ]
><;

694 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:35:58 ]
>>684
そのスレどこ?

695 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 17:58:27 ]
>>692
C++スレだけに

696 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:08:50 ]
>>694
pc11.2ch.net/test/read.cgi/tech/1184717430/653-654

>>695
誰がうまいこと言えと(ry

697 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:25:13 ]
>>684
別スレじゃなくてこのスレかよ
>>685
お前の言葉は本当だったな

698 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:16:35 ]
構造体のサイズをsizeofで取るとなんか不思議な結果が返ってくる。

struct TEST {
char chr[3];
};
printf("%d\n", sizeof(TEST));

結果:3

struct TEST2 {
long lng;
char chr[3];
};
printf("%d\n", sizeof(TEST2));

結果:8

TESTとTEST2で明らかに計算方法が違うのはなぜなんでしょうか?

699 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:23:41 ]
「パティング 構造体」でググると幸せになれるよ

700 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:26:02 ]
パディングじゃね?

701 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:28:07 ]
そして、なぜパディングが入るかというと、境界調整のため。

702 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 19:42:41 ]
>>699-701
www.g-ishihara.com/c_st_01.htm
を見て納得しました!
ありがとうございます。




703 名前:デフォルトの名無しさん [2007/08/02(木) 19:50:02 ]
すいません、おじゃまします。
コンストラクター、デストラクターからstaticのメンバー変数にアクセするにはどのように記述したらよいでしょうか。


704 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:01:11 ]
>>703
普通に。

705 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:49:03 ]
>>704
解答としては不適切。


706 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:57:27 ]
>>703
不適切。

707 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:00:09 ]
>>705
それ以外に答えようが

708 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:00:16 ]
静的メンバからのアクセスは制限あるけど
逆は問題ないよね?

709 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:17:00 ]
うん

710 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:23:30 ]
fstreamが遅いんですが何とかなりませんか。
wfstreamともなるとアホみたいに遅いです。

711 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:25:32 ]
端末変えろ

712 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:27:53 ]
fstream捨てたら。



713 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:44:25 ]
>>711
端末を変えるとfstreamが速くなるのですか?
>>712
機能的にはstdioより好ましいですし標準ですから、出来れば使いたいのですが。
wfstreamとgetline()を使って書かれた単にコピーするだけのC++プログラムが、
perlだのpythonだので書かれた、正規表現を用いてちょっと文字列を置換する
スクリプトよりも遅いので、呆れます(後者でもちゃんとエンコード変換を
行っているのにです)

714 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:54:44 ]
>>713
アタリマエだろ。
単にコピーするだけにgetlineを使うお前が悪い。

715 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:55:41 ]
単にコピーするなら read して write だろう・・・。

716 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:58:47 ]
その処理にgetlineを使おうとする発想にまず驚いた

717 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:59:34 ]
>>714
ああ、説明不足でしたね。
行単位で下らない置換処理を行う下らないプログラムを色々な言語や
ライブラリを使って書いてみたのです。
ですので、例えばPerlで書いたものも、$/をundefせずに行単位で入力して
いますから、条件は対等のはずでしょう。

C++で書いたものがあまりに遅いので、試しに置換処理を抜いて
コピーだけにしたところ、その時点で他のスクリプト言語にさえ負けている
(wfstreamの場合は)ことが判明してしまいました。

718 名前:703 [2007/08/02(木) 22:04:32 ]
RESありがとう御座います。
そうですか、普通にアクセス可能ですか。。。
現象としては「static int xxx」で宣言した変数がリンカーで次のようにエラーしてしまいます。(環境VC2005)
LNK2001: 外部シンボル ""public: static int PerfMonMgr::xxx" (?xxx@PerfMonMgr@@2HA)" は未解決です。」
宣言部にstaticを取って「int xxx」で宣言するとエラーは出ないんですが。
ちなみにこのコードはDLLのコードの一部なんですが関係ありませんでしょうか。


719 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:07:27 ]
変数の実体作ってないんでしょ。

720 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:07:34 ]
>>717
perlとかはIO関連はC/C++の標準関数は使わずに独自にコントロールしてるんじゃなかったっけ?
PerlのIOはPerl向けにチューニングしてるからこそそうなるんであって、
何にもしない素でもC++なら速いと思ってるなら幻想だろう。
構造的な美しさをとるか泥臭くても速度をとるかでケースバイケースじゃないかなぁ。

721 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:09:23 ]
なかなか興味深い結果だな。

722 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:10:24 ]
ちょっと話題がそれるが、C++でファイルのコピーだけならこんなカンジでいいんじゃね?

std::ofstream("out.bin", std::ios::binary) << std::ifstream("in.bin", std::ios::binary).rdbuf() ;



723 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:26:00 ]
OSネイティブの入出力APIを使うストリームバッファを自分で書いたりしてみたらどう?

724 名前:710 mailto:sage [2007/08/02(木) 22:29:02 ]
↓実験に使ったソースです
tonosiki.mbnsk.net/uploader/src/up1564.zip

青空文庫のテキスト形式の小説を読み込んで、<ruby>タグを適当に
挿入するだけの下らないプログラムです。
サンプル入力として夏目漱石の三四郎を入れてあります。

C++のものは、Boost(Xpressive)、ICU、COM(VBScriptのRegexエンジン)
を用いたものと、単にコピーするだけのもの3種(wchar_tに変換しない版、
自前で変換する版、wfstreamに任せる版)
スクリプトはJScript(WSH用)、perl, python
それとC#のものがあります。

C++で無変換なものが無論最速でしたが、次に速いのはJScript + wshext.dll
でした(cscript.exeなどから明示的に起動するとずっと遅い)
C++ではICUがなかなか健闘しましたが、boost版はPythonやPerlに勝てず、
wfstreamでただコピーするだけの版は、これらのどれよりも遅かったです。


725 名前:710 mailto:sage [2007/08/02(木) 22:35:40 ]
>>720
もともとPerlは速い印象でしたが、エンコード指定のopen()を使うと
それほどでもない
というか、意外にもPythonのほうが速かったです。

どっちもcygwinのもの(つまり遅い実装)を使ったのですが
それよりもVC++7.1でコンパイルしたネイティブのC++プログラムが遅いのは
流石にどうかと思いました

ちなみにC++のものは、std::basic_stringを戻り値として使わず
全て参照引数渡しで同じインスタンスを使いまわすとパフォーマンスの
改善が見られましたが、素直な書き方に比べて大きな違いが出るほどでは
ありませんでした。

726 名前:デフォルトの名無しさん [2007/08/02(木) 22:41:30 ]
Cが最速なのは間違いがないよ
C単体ならDLLを使わなくていいんだから・・
時間が掛かるところは、読み込み、出力と置換する場所のサーチでしょ?
文書をバッファに蓄えておいて、置換作業と並列化してみ

727 名前:710 mailto:sage [2007/08/02(木) 22:46:34 ]
>>726
Cでも書こうかと思ったのですが、
char->wchar変換
置換1〜3
wchar->char変換
の5段ぐらいのフィルタ処理を行っており、文字列処理とメモリ管理が
あまりに面倒臭いのでやめましたw

CでやるならGCが欲しいです。

728 名前:デフォルトの名無しさん [2007/08/02(木) 22:48:01 ]
>>724
キミのCのコードは訳が分からん(知識がない訳だが・・・)
もっと単純に書いてみ char型にして<<を探して置き換えるだけだろ??
そしたら速いかもよ

729 名前:710 mailto:sage [2007/08/02(木) 22:49:59 ]
>>728
Cでは書いていません。C++です。

拡張子cppのものは全てmain()を含むメインプログラムで、
全てのソースでfilter.hppをインクルードしています。


730 名前:デフォルトの名無しさん [2007/08/02(木) 22:50:24 ]
>>727
726でCといったのはC++を含むわけだが・・・
単純に言って、一行読み込んで《・・》を書き換えるだけでしょ?
なぜ何工程も必要なんだよ???

731 名前:710 mailto:sage [2007/08/02(木) 22:52:11 ]
>>730
日本語を含む正規表現での置換処理ですので、wchar_tに変換しています。
置換を3段階行っているのは、もっと効率化できるかもしれませんが、
どの言語でもやっていることは同じです。

C++だけ特に遅くなるような書き方をしているつもりはありません。

732 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:52:15 ]
C++のlocale周りを理解している人間なんて本当に少ない。おれもよくわかんないし。
それはぐぐっても日本語英語問わず資料が少ないことからも想像が付く。
そして処理系の実装はバグ持ちで遅く、ますます誰も使わず、負の悪循環。

>>730
その処理を全部省いたとしても、ワイド文字ストリームという砦が待ち構えている。




733 名前:デフォルトの名無しさん [2007/08/02(木) 22:53:54 ]
>>731
正規表現使わずに、例えばchar c[1000]; に読み込んで
if ( c[i]=='<' && c[i+1]=='<' ) とやった方が速いだろ

734 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:56:18 ]
>>733
他言語との比較でそんな抜け道はだめだろ。

735 名前:デフォルトの名無しさん [2007/08/02(木) 22:59:27 ]
速く変換したいという目的なんでしょ?そのためにどれが速いか検討していると
普通に考えると正規表現使わず<<だけ見つけた方が速いだろって事だ

736 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:00:29 ]
wchar_t なんかに変換する必要ないじゃん。
その文字コードに合わせて処理すればいいだけ。

737 名前:710 mailto:sage [2007/08/02(木) 23:02:44 ]
>>735
いいえ。違います。
速くしたいのならmmap()でも使いますが、Perlで以下の3行で済む下らない
仕事に一体何行費やすつもりですか。
試しにCのコードを書いてみてください。可変長の文字列を使う時点で既に
Cでは面倒くさいです。

$s =~ s{(.+)[#「\1」に傍点]}{
        sprintf('<ruby>%s<rt>%s</ruby>', $1, 'ヽ' x length($1))}ego;

$s =~ s/|?([々\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}]+)《(.+?)》/<ruby>$1<rt>$2<\/ruby>/go;

$s =~ s{([||〔\s])([^|〔《》\s]+)《(.+?)》}{sprintf(
    '%s<ruby>%s<rt>%s</ruby>', ($1 eq '|') ? "" : $1, $2, $3)}ego;

738 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:03:43 ]
C++ならなんでも速いというのは幻想。
速くなるようにチューニングする余地が用意されているというだけで、
素のままで速いとは限らない。正に今回はその好例。

739 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:04:18 ]
文字コードが何かもわからないのに>>733はないだろ
UCS-2だったらどうする


740 名前:デフォルトの名無しさん [2007/08/02(木) 23:04:37 ]
どのコードでも、《》の配置は換わらないのでは???

741 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:06:57 ]
>>735
普通の考えなんか価値なす。
大事なのは現実の速度。


742 名前:710 mailto:sage [2007/08/02(木) 23:07:40 ]
>>740
漢字《ふりがな》
といったパターンを捕まえて、変換しなければなりませんので、
文字クラスにUnicodeが使えると便利なのです。

それに、「全ての言語で」Unicodeの正規表現を使っています。
C++だけわざわざそうしているわけではありません。



743 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:09:53 ]
>>735
他の言語でも同じことやったら、またC++より速くなったりしてw

744 名前:735 [2007/08/02(木) 23:09:59 ]
>>710、ちょっとまってて いま書くから
もとのファイル354Kしかないから100倍 (35M) に増やして比較しようぜ!
そしたら速度差は歴然になるからさ

745 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:11:22 ]
思わずどっちの方向に歴然とした差が生まれるのかwって言いたくなる。

746 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:12:45 ]
ソース見てなかった
》携帯からのtypoかと思ってた

747 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:12:52 ]
じゃあ俺はHSPで書く!!

748 名前:735 [2007/08/02(木) 23:16:30 ]
ちなみに漢字コードは元々のシフトJISに限定するけどいい??

749 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:18:52 ]
ついでだからwchar_tに変換するものも書いてよ。
変換方法は何でもいいからさ。

750 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:20:50 ]
>>731
まず入力にはboost::spirit::file_iteratorを使う
デコード用のiteratorは自分で書くかboostの中から探す
つぎにxpressiveのregex_token_iteratorでトークンに分ける(cvsのでないと遅くなるので注意)
そのトークンに付け加えつつストリームに出力する
こうしてstd::stringどころかヒープさえほとんど使わないで出力する
これで世界最速のプログラムの完成である (完)

751 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:23:05 ]
そもそも、Perl だろうが何だろうが、
ターゲットの文字コードは分かんないとあかんだろ?

752 名前:デフォルトの名無しさん [2007/08/02(木) 23:25:29 ]
文字コードを統一する部分を持っていればよい



753 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:32:51 ]
標準ではないけど、mbs系の関数使えば?

754 名前:デフォルトの名無しさん [2007/08/03(金) 00:02:30 ]
やっぱ面倒になった
方針だけ書いておく

e[2]="《";
f[2]="》";

strに一行読み込み

str[n] str[n+1]がeと一致するものを探して
k=n-2、n-4・・・を調べて
(c[k]>134 && c[k]<160) || (c[k]>223 && c[k]<254)でないもの(漢字でない)を見つける
そのあとに<ruby>を挿入して、漢字もつなげる
以下同様にやる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<239KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef