No.1ベストアンサー
- 回答日時:
MFCのCStringはUnicodeに対応しているようです。
また、CFileでUnicodeのファイルを読み書きしても問題はありませんでした。http://www.microsoft.com/japan/developer/library …
CFile、CStringなど、MFCを使って処理されていますが、VC++.NETを使っているため、.NET Frameworkを使ってみるのはどうでしょうか?.NETはC#から使うのが一番ですが、C++からでも使用できます。
C++.NETでUnicodeファイルのRead/編集/Writeサンプル
------------------------------------------------------------------------------
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
int _tmain()
{
// Unicodeでsample.txtを読み込み
StreamReader* sr = new StreamReader("sample.txt", Encoding::Unicode);
String* buffer = sr->ReadToEnd();
sr->Close();
// "&"を"&"に変換
String* work = buffer->Replace("&", "&");
// Unicodeでoutput.txtに書き込み
StreamWriter* sw = new StreamWriter("output.txt", Encoding::Unicode);
sw->Write(work);
sw->Close();
return 0;
}
この回答への補足
質問者のmkmarimoです。
neuron-xさん、丁寧な回答ありがとうございます。
欲しい答えがいただけ感謝しております。
ところで、補足質問が2点あります。
申し訳ありませんが、また時間があればご教授ください。
【補足質問1】
回答2行目の参考URLの内容ですが、VC++の設定をデフォルトのままで
ビルドしてもUnicodeでのファイル保存はできないということでしょうか?
内容をじっくり読んでもあまり理解できませんでした。
申し訳ありません。
【補足質問2】
記載していただいているサンプルプログラムですが、
namespaceなどがありますが、C++なのでしょうか?
あまり知識がなく申し訳ないのですが、C#のサンプルかと感じます。
以上。よろしくお願いします。
No.4
- 回答日時:
#1です。
□MFCでUNICODEを使う場合ですが、#3さんの回答が詳しいです。
(1) UNICODEを使用する宣言、または設定を行う(プロジェクトのプロパティ)
(2) 型にTCHAR、LPTSTR、LPCTSTRをなどを使う。
□最初のサンプルはC++.NETを使った物です。
.NET Frameworkを使っているため、マネージドコードになります。
ちなみに、C#で同じプログラムを書くと、つぎのようになります。
using System;
using System.IO;
using System.Text;
public class UnicodeIO
{
static void Main(string[] args)
{
// Unicodeでsample.txtを読み込み
StreamReader sr = new StreamReader("sample.txt", Encoding.Unicode);
string buffer = sr.ReadToEnd();
sr.Close();
// "&"を"&"に変換
string work = buffer.Replace("&", "&");
// Unicodeでoutput.txtに書き込み
StreamWriter sw = new StreamWriter("output.txt", true, Encoding.Unicode);
sw.Write(work);
sw.Close();
}
}
余談ですが、私も昔C++でMFCなどを使っていました。CStringやCFileなどMFCって便利だな~と思っていたのですが、C#を始めてからは「.NET Framework」って楽だな~と思うようになりました。C++で数十行書かないといけない処理が、C#では数行でかけてしまったりもします。(ただし、込み入った処理を書くときは今でもC++)
機会があれば、.NET FrameworkやC#についても調べてみてはいかがでしょうか?
No.3
- 回答日時:
まずUNICODEにも色々な種類があることをご存知でしょうか?
一般的にWindowsのUNICODEはUCS2の事を指します。
これはWindowsXpならメモ帳で「Unicode」を指定して保存したのと同じものです。
ちなみに#1さんの方法はVC++で.net Frameworkを使った方法です。
でCString(MFC/ATL)でもUCS2を扱う事は可能なようです。
.net2003の場合ですが
プロジェクトのプロパティの中に
文字セットという項目があるのでそこを「Unicode 文字セットを使用する」を選べば良いでしょう。
ところでC/C++でワイド文字を指定する場合
wchat_t str[6] = L"あいうえお";
というふうに文字リテラルの先頭にLをつけます。(vc++だけでなくgccやbccも共通)
VC++でよくTCHARとかLPTSTC LPSTC LPWSTRという定義がでてきますが
UNICODEが定義されていない場合
TCHAR→char
LPTSTR→char*
LPCTSTR→const char*
LPSTR→char*
LPWSTR→wchar_t*
に置き換わりますがUNICODEが定義されていた場合
TCHAR→wchar_t
LPTSTR→wchar_t*
LPCTSTR→const wchar_t*
LPSTR→char*
LPWSTR→wchar_t*
に置き換わります。
おまけですが
tchar.hをincludeして
CString A = _T("あいうえお");
とすれば
UNICODE時は
CString A = L"あいうえお";
そうでないときは
CString A = "あいうえお";
となりUNICODEでもそうでない場合もコンパイルすることが可能になります。
回答ありがとうございます。
お陰様で疑問が解消されました。
何とかなりそうなので質問を締め切らせていただきます。
丁寧にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
複数のテキストファイルを1つに...
-
多数のサブディレクトリ内のフ...
-
Windowsのバッチファイルを利用...
-
ファイルの最後に文字列挿入
-
psqlでエラーログをとりたい
-
Ruby初心者です。
-
コマンドプロンプトで指定した...
-
UWSCでファイルを開く方法
-
バッチファイルからVBAに引数を...
-
実行時にコモンダイアログのフ...
-
バッチファイルで文字列削除に...
-
任意のディレクトリ以下に存在...
-
ftpコマンドで複数のファイルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
txtとはWordでなんですか?
-
テキストファイルで提出とは?
-
バッチファイル 複数ファイル...
-
UWSCでテキストファイルを開い...
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
renameコマンドについて
-
バッチファイルからVBAに引数を...
-
accessでSQL文を使ってcsvファ...
-
エクセルの各セルの内容をそれ...
-
MS-DOSのバッチファイルの中で...
-
フルパスの中にワイルドカード...
おすすめ情報