アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++で、ライブラリなど使わずにcsvファイルの文字コードEUC-JPをSJISに変換しようと試行錯誤しましたができませんでした。

googleなどで検索したのですが、なかなかうまくいかず手詰まり気味で投稿させていただきました。
16進数の値で調整するのは理解したのですが、ファイル全部を一括でする方法が導き出せませんでした。Linuxのiconvコマンドみたいにさっくりできたら良いのですが、C++だと難しく・・・。
ご存知の方、ご教示を宜しくお願いします。

環境はLinuxのC++で変換するプログラムです。

A 回答 (3件)

EUC-JPからシフトJISへの変換であれば、計算でできます。


コードを貼ってもよいのですが、先人の成果物がありますので、それを紹介しておきます。

http://oku.edu.mie-u.ac.jp/~okumura/algo/
↑にある『C言語による最新アルゴリズム事典』に、skanji.cというソースファイルがあります。
これは、JISコードからシフトJISに変換するものですが、JISコードの第1、第2バイトにそれぞれ0x80を加えればEUC-JPになりますので、ほんの少しの改造で何とかなるはずです。
あと、これはCのソースですが、C++でもほぼそのまま使えるはずです(念のため)。
    • good
    • 0
この回答へのお礼

ソースファイルのURLありがとうございました!

今回はsystem()関数を使うことで解決しましたが、今後の為にもURL先のソースを使って別Verを着くタイと思います!

お礼日時:2011/09/14 19:34

厳密に言えば、ライブラリ無しだと難しいでしょう。

printfやfgetcも「標準ライブラリ」の一部ですから。
まあ、C言語の一部みたいなものなので、それくらいはいいとして。

EUC-JP→Shift_JISだけなら、極簡単な部類に入ると思います。
エラー処理とか考えなけば、ファイルを順番に読んで
・EUC-JPの2バイト文字の1バイト目→もう1バイト読み込み→(一度JISにすると対応式に使いやすいかも)→Shift_JISに変換
・EUC-JPの1バイト文字→そのまま
とするだけですから。

なにがどううまくいかないのでしょうか?それが無ければこれ以上アドバイスのしようがありません。
    • good
    • 0
この回答へのお礼

なるほど。詳細な手順ありがとうございました!
system()関数を使うことで解決しました。

お礼日時:2011/09/14 19:32

> Linuxのiconvコマンドみたい



なら、libiconvを使えばいいのでは?
    • good
    • 0
この回答へのお礼

早速の返信ありがとうございます。
調べてみましたが、パッケージインストールが必要みたいなのでダメでそうです。
パッケージやライブラリなど導入せずにプログラミングだけだと難しいでしょうか・・・。

お礼日時:2011/09/13 21:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!