2014年8月8日0件のコメントC++でツイッタークライアントなぞ作ろうと思ったはいいものの、いざ始めてみると分からないことが多すぎて何をするにも時間が掛かって仕方がない...そんな僕の無知と実力の無さを物語るつまづき第一弾!!HTTPリクエストってURLエンコーディングしないといけないの?なんて事もちゃんと理解してなかったので自戒を込めてURLエンコーダを書きました。作ったものはなんてこないタダのUTF-8からURLエンコードへの変換関数です。あれこれと調べるのに無駄に時間が掛かかって結局半日がかりの作業に...特に時間が掛かったのは文字コード周りの確認とRFCの解読作業。全部UTF-8で統一しちゃえよ、Shift-JISなんて消えて無くなればいいのに(泣)ついでにC++らしく書くべくstringクラス(本当はクラスじゃないらしいけど)をちょっくらかじったり...結局多数の文字コードに対応するのは諦め、取り敢えず入力をUTF-8と仮定して作りました。0;}このコードでは入力された文字列データをfor文で1文字分ずつ文字コード識別し、%xxの形式にする必要がある場合は文字コードを16進表示にしたものを%に続けて、そうでない場合は文字データをそのまま、stringstreamのインスタンスに出力(?)して、URLエンコードの文字列を作っています。streamを使うと入れた(出力した)ものを勝手に繋げていってくれるので楽でいいですね。最初はstringのインスタンスに+=演算子で足しこんで行こうかと思ったのですが、文字コードの16進表示を得るのにstringstreamを使っているのにstringで文字列を作るのは無駄が多い気がしたので止めました。́・ω・`)冒頭ではUTF-8専用と書きましたが、関数の最初で定義してある定数を変更すれば他の文字コードセットでにも対応出来るはず...です。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。