winAPIとGDI+を使ったプログラムです。picというフォルダに0.pngから9.pngまで画像が用意してあり、for文でいっきに読み込むことを狙い
以下のコードを書いたのですが、「0x00000001 を読み込み中にアクセス違反が発生しました。」といった類の出力がされexeがうまく動きません。
("pic/%S.png"),iの部分を("pic/0.png")と書き換えると正常に動作し、画像も表示されます。
_tcscpy_sをswprintfの変わりに使うと、同様に"pic/0.png"と直接書くと期待通りに動作するのですが、iの値を使おうとすると画像が表示されません。
いろいろ調べながら試したのですが、お手上げになりました。
どなたかアドバイスお願いします。
ワイド型の文字列の加工について質問です
Re: ワイド型の文字列の加工について質問です
現在私はwin32APIはつかわわなくなってますが
swprintf(picPas,_T("pic/%S.png"),i);
この部分がおかしいのかと
基本だとは思いますが
i は int 型なのに 文字列表示用の %sに 入れようとしていることが問題なのではないかと
i を 文字列型に変えれば直るんじゃないですか?
swprintf(picPas,_T("pic/%S.png"),i);
この部分がおかしいのかと
基本だとは思いますが
i は int 型なのに 文字列表示用の %sに 入れようとしていることが問題なのではないかと
i を 文字列型に変えれば直るんじゃないですか?
Re: ワイド型の文字列の加工について質問です
もしかすると変数iはint型なのに%sで表示しようとしているからかもしれませんね。
%Sを%dに変えてみてはいかがでしょうか?
%Sを%dに変えてみてはいかがでしょうか?
Re: ワイド型の文字列の加工について質問です
今まで私は試した事はなかったのですがホヅミさんの方法でもできるのでしょうかね?
できるならそちらのほうが簡単に直せるかと思います。
できるならそちらのほうが簡単に直せるかと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ワイド型の文字列の加工について質問です
%dが正しいと思います。printf系の書式は基本小文字ですよ。
でもC++なので、sstreamを使ったほうが良いんじゃないでしょうか?
「C++編(標準ライブラリ) 第32章 文字列ストリーム」
http://www.geocities.jp/ky_webid/cpp/library/032.html
ワイド文字はwostringstreamを使ってください。
でもC++なので、sstreamを使ったほうが良いんじゃないでしょうか?
「C++編(標準ライブラリ) 第32章 文字列ストリーム」
http://www.geocities.jp/ky_webid/cpp/library/032.html
ワイド文字はwostringstreamを使ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ワイド型の文字列の加工について質問です
ワイド文字に統一するなら
_T("文字列")
じゃなくて
L"文字列"
にしないとコンパイル設定によってはエラーになってしまうかと。
swprintfも標準じゃないほうですけどいいのでしょうかね。
_T("文字列")
じゃなくて
L"文字列"
にしないとコンパイル設定によってはエラーになってしまうかと。
swprintfも標準じゃないほうですけどいいのでしょうかね。
Re: ワイド型の文字列の加工について質問です
皆様の素早いお返事に感謝します。
%Sの部分を%dにすることで解決しました。
いろいろ試すうちに文字列だからsだろと、決めつけてしまっていたようです。
お蔭様で無事プログラムも動きました、皆様のアドバイスのお陰です。とても助かりましたありがとうございます。
%Sの部分を%dにすることで解決しました。
いろいろ試すうちに文字列だからsだろと、決めつけてしまっていたようです。
お蔭様で無事プログラムも動きました、皆様のアドバイスのお陰です。とても助かりましたありがとうございます。