質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1295閲覧

作成したiniファイルにBOMを書き込んだが、警告が出る。

T.Adams

総合スコア40

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/02/14 08:55

分からないこと

iniファイルを作成したのですが、BOMを書き込みたく、以下に記載した処理を行っていますが、警告が出ます。
この対処として、char型をint型に変換すると警告がなくなるのですが、対処として正しいか判断が付きません。分かる方いらっしゃいましたら、お願いします。

ソース

C++

1char wbuf1[1] = { 0xFF }; 2char wbuf2[1] = { 0xFE };

※charをintにすると、警告はなくなります。

警告内容

警告 C4838 'int' から 'char' への変換には縮小変換が必要です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/02/14 09:18

bufと書きつつ、1バイトごとで別になっててバッファーでも無い気がしたり。
guest

回答1

0

ベストアンサー

unsigned charにするのがよいと思います。

投稿2020/02/14 09:07

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.Adams

2020/02/14 09:46 編集

この記述のあと、Win32APIを使用して、WriteFileを使用して、iniファイルへwbuf1とwbuf2を書き込みたいのですが、BOMとしたいのですがうまく書き込めず、エラーになります。
T.Adams

2020/02/14 09:50 編集

m_hFile = ::CreateFile(strIniPath, GENERIC_READ, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); if(m_hFile != INVALID_HANDLE_VALUE) { // 変数の定義 DWORD dwByteWritten = 0; DWORD errorCord; char wbuf1[1] = { 0xFF }; char wbuf2[1] = { 0xFE }; // iniファイルにBOMを付与する if (WriteFile(m_hFile, wbuf1, 1, &dwByteWritten, NULL) == 0) { errorCord = GetLastError(); goto leave; } ・ ・ ・
asm

2020/02/14 10:08

意図通りには動かないかもしれませんが、「エラー」にはなっていないかと思います。 私でしたら DWORD written=0, errorcode; WORD wbuf = 0xFEFF; if(WriteFile(m_hFile, &wbuf, sizeof(WORD), &written, NULL) == 0){ // 略 } ですかね
T.Adams

2020/02/14 10:48

すみません。こちらのミスでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問