- ベストアンサー
Visual C++でunsigned char*型の変数をファイルに保存する方法
Wr5の回答
- Wr5
- ベストアンサー率53% (2177/4070)
>Visual C++で、 バージョンはなんですか? あるいは、使用している文字セットは? 「マルチ バイト文字セットを使用する」か「Unicode 文字セットを使用する」か…… >このデバイスの操作APIが、 >赤外線信号をunsigned char*型で受け取ります。 「文字列」として受け取れるのですか? 「バイト列」だった場合は、そのままではiniファイルには書き込み出来ませんが。 >渡せる方がLPCTSTR型となっていますが、これがよくわかりません。 入っているのが文字列で文字セットが適切であればキャストして渡すような感じになります。 デバイスから受け取るのがunsigned char*であれば…文字セットは「マルチバイト」の方になるかと思いますけど。 バイト列なら先に書いた通り無理です。 # バイト列を16進文字列で文字とすれば可能でしょう。変換の手間(とコスト)が掛かりますが。 バイト列ならfwrite/fread(あるいはWriteFile/ReadFileなどのAPI)で読み書きとした方が楽…でしょうね。 # 人間が見たい場合は面倒でしょうけど。
関連するQ&A
- UNICODE化のための書き換え
お世話になります。 Visual stdio 2010 C++で作成しております。 以前までは、UNICODEを意識しておらず、 char const unsigned char* を使用していました。 UNICODE化を意識して char→TCHAR に変更しているのですが、 const unsigned char* はどのように書き換えればよいのでしょうか? ※LPCTSTRだけだと意味が変わってしまう気がして。。。 お手数ですがよろしくお願い致します。
- ベストアンサー
- C・C++・C#
- iniファイルに追記がしたいです。
いつもお世話になっています。 iniファイルの中のあるデータをGetPrivateProfileStringで調べて、その中になければデータを 追記したいです。 WritePrivateProfileStringの場合、iniファイルにあるデータが追記したい内容がないだけで、他のデータが 入っていても、上書きされてしまうんですよね? もしその中に他のデータが入っていた場合は、追記をしたいのですが、それができるAPI関数って 何かありますか? iniファイルに関して、ネットで調べていると、WritePrivateProfileStringなどしか出てこなくて・・・。 もしできないようでしたら、追記できるような何かいいアイディアがあれば・・・と思っています。 すみませんが、よろしくお願いします。 わかりづらい文章で申し訳ありません。
- ベストアンサー
- Visual Basic
- C言語でPGMファイルの読み込みたいです。
Visual C++ 6.0でPGM画像を読み込みたいのですが、ファイルの読み込みがわかりません。 コメント行は読み飛ばして以下の変数・配列にそれぞれ格納したいです。 int w,h //画像サイズ unsigned char img[][] //画像データ
- ベストアンサー
- C・C++・C#
- TextBoxの文字がかけてしまうのですが VB.NET
VB.NET FrameWork1.1の環境なのですが、 Declare Function WritePrivateProfileString Lib "KERNEL32.DLL" Alias "WritePrivateProfileStringA" ( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpString As String, _ ByVal lpFileName As String) As Integer このAPIを使ってファイルに文字列を記録しているのですが、 TextBoxに表示したファイルのフルパスを記録すると このAPIを使った直後にそのTextBoxの文字の後半が欠けてしまいます。 短いパス名なら大丈夫なのですが、長いパス名の場合に欠けてしまいます。 試しに Dim a As String = TextBox1.Text WritePrivateProfileString("TextBox", "1", a, FileName) Console.WriteLine(a) としても同じく欠けてしまいます。 変数aの宣言の型をString ではなく Object にすると 欠けなくなるのですが、変数aやTextBoxの内容は読み取った だけなのになぜ書き換えられてしまうのでしょうか? どの場合でもファイルへの記録は正常に出来ています。 何か問題点などありましたらご教授いただけると助かります。
- ベストアンサー
- Visual Basic
- icon format について
Visual Studio.NET 2003 MFC を使用しています。 View画面で、アイコンを表示しようと思いました。 アイコン読み込みようのクラスを作成しました。 class icon { public: void IconHeadRead(FILE *fp,int *width,int *height) { unsigned char uc; unsigned short us; unsigned int ui; fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&uc,sizeof(unsigned char),1,fp);*width=uc; fread(&uc,sizeof(unsigned char),1,fp);*height=uc; fread(&uc,sizeof(unsigned char),1,fp); fread(&uc,sizeof(unsigned char),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&ui,sizeof(unsigned int),1,fp); }; void IconDataRead(FILE *fp,unsigned char *red,unsigned char *green,unsigned char *blue) { unsigned char uc; fread(&uc,sizeof(unsigned char),1,fp);*red=uc; fread(&uc,sizeof(unsigned char),1,fp);*green=uc; fread(&uc,sizeof(unsigned char),1,fp);*blue=uc; }; }; このred,green,blueの値を使用して、 SetPixelでドローしようと思いましたが、 変な表示になります。 width,heightは、正しいようです。 ICON フォーマットについて教えてください。 よろしくお願いします。 同じような要領で、bitmapは保存、読み込みはできました。
- ベストアンサー
- C・C++・C#
- wParam
wParamは、unsigned int型で、仮想キーコードを、格納してますよね。 wsprintf()内で(TCHAR)キャストしてますが、 これは、変数strの型がTCHAR型なので(wParamは、unsigned intなので型をあわせるために)やっているんですか? (TCHAR)キャストしないとエラーになりますか?教えてください。 HDC hdc; TCHAR str[255]; swich(umsg){ case WM_CHAR: wsprintf( str, TEXT("%c"), (TCHAR)wPara ); hdc = GetDC(hwnd); TextOut(hdc, 0, 0, str, lstrlen(str)); return0 }
- ベストアンサー
- C・C++・C#
- OCXのメソッドの引数に文字列を返したい
こんにちは。いつもお世話になっております。 早速ですが質問させて下さい。 VisualC++のClassWizardにて作成したメソッドの引数に文字列を返したいのですがどうすればよいでしょうか。 例えば、「test.ocx」というOCXにGetFileNameというメソッドを追加したとします。 ---<GetFileName>--- UINT GetFileName( LPCTSTR FilePath, //ファイルフルパス LPCTSTR FileName //ファイル名 ) ------------------- ---<VBからの呼び出し>--- FilePath = "C:\Program Files\test.txt" ret = obj.GetFileName(FilePath, FileName) 'ここでFileNameに値を返したい ------------------------ ここでFileNameにOCXから値を返すようにしたいのですが、型(ClassWizardパラメータリストの「タイプ」)は何になるのでしょうか。 数値を返す場合は、「long*」でできたのですが、 文字列を返す方法が分かりません。(「LPCTSTR*」というのもないですし) どうかご教示下さい。 <環境> Windows 2000, Visual C++ 6.0, Visual Basic 6.0
- ベストアンサー
- C・C++・C#
- WM_CHAR or WM_KEYDOWN の「wParam」について
よくわかっていないのですが、 switch (message) { case WM_CHAR: というところで、wParamから、文字の情報取得して、 HDC宣言して、TextOut関数使用…、の途中で、 wParamの文字情報は、どのようにすれば TextOut関数に渡せるのでしょうか? Visual C++を勉強したてで、勉強の成果をと思い、 テキストエディタを作ってみたいと思ったのですが、 さて、どうしたらよいのでしょうか? エラー内容は、unsigned int → const char * にできません、ということなのですが、 じゃぁ、型の変換の仕方は?という感じです。 初心者なので、簡単な例をつけて説明してくださると助かります。よろしくお願いします。
- 締切済み
- C・C++・C#
- templateをシリアライズするには?
templateで作った変数をシリアライズする方法がわからなくて困っています。 例えばhogehogeという変数を用意します。これはtemplateで hogehoge<TYPE>として、型はint、double、char[]、wchar_t[] のいづれかを取れるようにします。 この変数hogehogeをシリアライズしてファイルに保存したいのです。 シリアライズするには、int又はCObject*又はCString型にいったん キャストしてからシリアライズすることになると思うのですが ここで、hogehogeという変数がどの型になっても問題なくシリアラ イズできるようにするにはどうしたらいいのでしょうか?
- 締切済み
- C・C++・C#
補足
2010で「マルチ バイト文字セットを使用する」になっています。 http://1c3.world.coocan.jp/wiki/index.php?%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EBDLL%A4%F2%BA%EE%A4%ED%A4%A6#p92ca3d9 こちらのページで公開されているAPIを使っているのですが、 試しに unsigned char *signal; Receive(signal); //APIの関数 printf("%s\n",signal); としてみたら文字化けしました。 これってバイト列を受信しているからなんでしょうか?