
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で質問しましょう!
似たような質問が見つかりました
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Excel(エクセル) 自動更新前のエクセルファイルは何処に? 1 2023/01/06 00:53
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Google Drive Googleスライドについて 1 2023/05/01 00:11
- Word(ワード) officeの自動保存について教えてください 2 2023/06/18 09:11
- Word(ワード) 「Word2019」の自動保存を解除したい。終了時のダイアログも欲しい。 3 2022/06/17 08:30
- その他(ソフトウェア) コマンドプロンプトについて教えてください。 状況: 画像編集ソフト上でネットから保存した画像を使うの 3 2022/05/26 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
テキストファイルで提出とは?
-
VBAでワークシートを引数として...
-
COPYコマンドで結合すると余計...
-
psqlでエラーログをとりたい
-
Excelで、大量のファイルをテキ...
-
ファイル内容の修正、行削除に...
-
ハードディスク上書き用大容量...
-
C#でcabファイルをつくる2
-
バッチファイルからVBAに引数を...
-
バッチファイル 複数ファイル...
-
VBSでフォルダ内のテキストファ...
-
Unicodeで保存されたtxtファイ...
-
textファイルの内容の削除につ...
-
renameコマンドについて
-
リモートのファイル存在確認
-
Perlで同じフォルダにある任意...
-
外部exeに対しての引数受け渡し
-
Windows マシンでFTPバッチが動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
psqlでエラーログをとりたい
-
ファイル内容の修正、行削除に...
-
バッチファイルで文字列削除に...
-
テキストファイルで提出とは?
-
拡張子を元に戻す
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
エクセルの各セルの内容をそれ...
-
ファイル名の一部をbatで変更し...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
3つ以上のテキストファイルをコ...
-
Windowsのバッチファイルを利用...
-
ファイルのワイルドカードについて
おすすめ情報