【初心者歓迎】C/C++室 Ver.92【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/07/31(木) 19:14:13.79ID:17Xd3Yqqただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
前スレ
【初心者歓迎】C/C++室 Ver.91【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1400394837/
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0002デフォルトの名無しさん
2014/07/31(木) 19:15:07.44ID:17Xd3Yqq0003デフォルトの名無しさん
2014/07/31(木) 21:38:29.86ID:cIGHixSb0004デフォルトの名無しさん
2014/08/01(金) 07:55:38.07ID:4+2xbBXr0005デフォルトの名無しさん
2014/08/01(金) 10:19:34.67ID:ZbseM8Xc0006デフォルトの名無しさん
2014/08/01(金) 23:35:44.60ID:Q1xcVL69charやWCHARでマルチバイト文字とワイド文字を扱うと学びました。
しかしこれは、いわゆる「文字セット」であって文字コードではありませんよね。
例えばマルチバイト文字にはShift-JISやANSI、cp932、EUC-JPなどがあるみたいですが、標準ではそのような指定はどこにもないように思えます。
マルチバイト文字セット=cp932
ワイド文字=UFT-8
とみなし、それ以外の文字セットは基本的に用いないという暗黙的な了解なのでしょうか。
webページを作成する際には当然だった文字コードの指定が見当たらず不安に思っています。
0007デフォルトの名無しさん
2014/08/01(金) 23:47:26.94ID:xmbDbUKFマルチバイト文字とワイド文字を変換する時にそれぞれの符号化方式を指定する
さらにOSによっては、ファイルシステムに使用可能な符号化方式が指定されている場合もある
0008デフォルトの名無しさん
2014/08/02(土) 00:02:40.42ID:yAhCEHKv機種や環境によって違う。
windowsのUTF-16もWCHARで一文字を表現できないことからマルチバイト的だし。
一文字が一変数に格納可能という条件がワイドで、
一文字に複数変数がないと格納不可能という条件がマルチバイトでは。
一変数の単位が7ビットとか8ビットとか16ビットとか32ビットとかコアな状況でも変わると思う。
0009デフォルトの名無しさん
2014/08/02(土) 00:09:39.32ID:qRelH0Iuマルチバイトはそれら以外すべてで、UTF-8など
0010デフォルトの名無しさん
2014/08/02(土) 00:19:54.08ID:TsFH3rUF0011デフォルトの名無しさん
2014/08/02(土) 00:31:36.16ID:aXuilSuQちなみにwchar_tはWindows以外の大半は4バイトな
0012デフォルトの名無しさん
2014/08/02(土) 00:33:15.75ID:QyMYNts00013デフォルトの名無しさん
2014/08/02(土) 02:02:12.74ID:LgAU6+Twいいえ、文字セットではありません。
文字コードであり、より正確にはテキストエンコーディングです。
日本語Windowsの場合、
MBCS: 文字集合=Windows-31Jのアレ、エンコーディング=いわゆるシフトJIS
ワイド: 文字集合=Unicodeのアレ、エンコーディング=UTF-16
0014デフォルトの名無しさん
2014/08/02(土) 02:06:07.54ID:yAhCEHKv0015デフォルトの名無しさん
2014/08/02(土) 02:08:53.66ID:ihMKWWqt1文字に使うバイト数が2バイトのみなのがワイド
Windows以外は知らない
0016デフォルトの名無しさん
2014/08/02(土) 02:27:56.74ID:qRelH0Iu2・4バイト
マルチバイトは、3〜6バイトで(もっと長いのもある?)、
3バイトが多い
0017デフォルトの名無しさん
2014/08/02(土) 02:29:47.48ID:LgAU6+Tw>文字コードの指定が見当たらず
Visual C++の設定がユニバーサル文字の場合、
コンパイル時にソースはUTF-8またはシフトJISの仮定の下に解釈され
charはシフトJISに、wchar_tはUTF-16に、TCHARはUTF-16に変換される。
Visual C++の設定がマルチバイト文字の場合、
コンパイル時にソースはUTF-8またはシフトJISの仮定の下に解釈され
charはシフトJISに、wchar_tはUTF-16に、TCHARはシフトJISに変換される。
いずれも実行時はwchar_tの文字はそのままで、
それ以外はコントロールパネルの言語の設定で指定した文字コードで解釈される。
0018デフォルトの名無しさん
2014/08/02(土) 07:58:58.76ID:uphwpvI8こういう糞レスを見るとUnicodeがencoding formとencoding schemeの
概念を別に分離したのがいかに大切だったかを実感する
0019デフォルトの名無しさん
2014/08/02(土) 09:08:07.32ID:2F7KFjBZ00206
2014/08/02(土) 15:23:13.72ID:4nNjqrDL0021デフォルトの名無しさん
2014/08/03(日) 03:10:05.25ID:AqnF5WVUコンストラクタで自動で呼ぶってのはあり?
0022デフォルトの名無しさん
2014/08/03(日) 03:23:55.71ID:rNEZw/2H0023デフォルトの名無しさん
2014/08/03(日) 19:38:15.30ID:ea9Ca7zyVisual studio 2013を入れたのでC++のハローワールドをテストしてみたのですが
ビルドが上手くいかず、ヘッダファイルが開けませんと表示されます
2010であればプロジェクトのヘッダファイルの所に使用したいヘッダファイルを入れて、ソースファイルでインクルードしてやればそれで良かったと記憶しています
初期設定を何もしていないのですがそれが原因でしょうか?ネットで調べて見ても情報が得られず困っています
解決方法を知っている方、教えてくれませんか?
0024デフォルトの名無しさん
2014/08/03(日) 19:41:58.53ID:yCTzYi3Mとりあえず全ての引数に&を付けておくと良いでしょうか?
void func(int &i, double &d, std::string &str)
{
// ...
}
void main()
{
int i;
double d;
std::string str;
func(i, d, str);
}
0025デフォルトの名無しさん
2014/08/03(日) 19:47:43.07ID:lrcEZtj9エラを張れ
>>24
実質的に*を付けないポインタみたいなもの。
0026デフォルトの名無しさん
2014/08/03(日) 20:09:02.39ID:ea9Ca7zyhttp://i.imgur.com/7AyiLCS.jpg
一応ヘッダファイルです↓
http://www.stroustrup.com/Programming/PPP2code/std_lib_facilities.h
0027デフォルトの名無しさん
2014/08/03(日) 20:28:26.74ID:F9uiJQazヘッダのパスが通ってないだけでしょ
0028デフォルトの名無しさん
2014/08/03(日) 20:31:49.84ID:dJ8y5LvHヘッダファイルが居る位置はソースと同じフォルダじゃないと、
(デフォルトでは)ダメなんじゃなかったっけ?
VSのヘッダーファイルのツリーからファイルの追加で、
ソースがおいてあるフォルダとは余所のフォルダのファイルも指示できるけど
そこへは基本的にパス通ってないから include "" では見えない
0029デフォルトの名無しさん
2014/08/03(日) 20:38:56.48ID:dJ8y5LvHSRC_DIR/hello_wordl.cpp
SRC_DIR/std_lib_facilities.h
なら通ると思う
SRC_DIR/hello_wordl.cpp
SRC_DIR/INCLUDE/std_lib_facilities.h
という位置関係とか
SRC_DIR/hello_wordl.cpp
INCLUDE_DIR/std_lib_facilities.h
という位置関係とかで
そのソリューション指示だと依存関係は IDE 管理下で確認できるけど、
コンパイラには ファイル名 から ファイルのある位置を知る術が無いので、
デフォルトのパスから探索して終了する
0030デフォルトの名無しさん
2014/08/03(日) 20:54:26.56ID:eFW9hWawヘッダーファイルを新規作成して、std_lib_facilities.hの中身をコヒぺ
0031デフォルトの名無しさん
2014/08/03(日) 21:20:15.57ID:AqnF5WVU#include "..\〜\std_lib_facilities.h"
0032デフォルトの名無しさん
2014/08/03(日) 21:23:54.44ID:ea9Ca7zy>>28
>>29
ありがとうございます、おかげで解決しました。パスが通ってませんでした。
(全く別の所にあってもIncludeの後にヘッダファイルのパスを書くと出来ました!
ソースファイルの上の階層にヘッダファイルがある場合は../../の表現を使っても出来ました!)
>>30
それは(´・_・`)最終手段ですね(´・_・`)
0033デフォルトの名無しさん
2014/08/03(日) 21:24:55.99ID:ea9Ca7zyありがとうございます、それで出来ました!
0034デフォルトの名無しさん
2014/08/03(日) 21:44:32.68ID:wVcpRmRy0035デフォルトの名無しさん
2014/08/03(日) 22:50:17.34ID:1KfsaatJ0036デフォルトの名無しさん
2014/08/04(月) 00:16:53.93ID:cek/HGoY>>34 切り分けできない男
0037デフォルトの名無しさん
2014/08/04(月) 02:14:34.43ID:LgeiXwf0・if( == NULL)
・try catch
・他(プロセス強制終了etc)
0038デフォルトの名無しさん
2014/08/04(月) 02:21:35.90ID:cy2se7Pq先ずはそこからだ。
0039デフォルトの名無しさん
2014/08/04(月) 02:36:26.93ID:VfXJ4NBKプログラムでどうこう出来るものではない
メモリを多くするなど、システム要件を満たす環境に、
変えてもらうしかない
0040デフォルトの名無しさん
2014/08/04(月) 02:38:52.49ID:NH51Dz+L0041デフォルトの名無しさん
2014/08/04(月) 03:23:26.97ID:LgeiXwf0>>38
論点とずれてる気がするが
WM_DESTROYで使用できなくなる機能Aをデストラクタで使用する場合
static宣言してるとWM_DESTROY後にデストラクタが呼ばれて機能Aを使用しようとして停止する
それを回避するために
deleteクラス
→機能A解放
ってやるようにしてる
>>39-40
つまり基本的には失敗=プロセス異常終了でもokと言う事でいいのかな
0042デフォルトの名無しさん
2014/08/04(月) 05:36:16.73ID:VfXJ4NBK使用条件を満たしていなければ、どこかでシステムダウンする
ただし、プログラムのバグや、何万回も再帰したのなら、
プログラマーの責任
0043デフォルトの名無しさん
2014/08/04(月) 06:05:08.09ID:hDvHywGxメモや断片化で希望のサイズが
確保できなくて失敗することがある
0044デフォルトの名無しさん
2014/08/04(月) 06:23:01.79ID:UAhHAw7M> クラスをnewして失敗した時の動作はどうするのがポピュラー?
って聞かれたら、ファイルをほぞんするとか、再起動して回復を図るとか、ログ取ってそのまま終了とか... って答えるんだが。
なので、
> ・if( == NULL)
> ・try catch
と
> ・他(プロセス強制終了etc)
は、レベルが違うように思う。
0045デフォルトの名無しさん
2014/08/04(月) 12:20:39.89ID:dahEKpKnカメレス
怖くないっすか
0046デフォルトの名無しさん
2014/08/04(月) 13:38:12.42ID:FbNkdJ2c「エラーが発生しましたお問い合わせください」と表示されるのでは
ユーザーの怒りの度合いが違う。
どうしようもないので何をしてもいいというのは
犯罪は犯す奴が悪いので警察は要らないという程度に乱暴な発想
0047デフォルトの名無しさん
2014/08/04(月) 15:44:51.27ID:hieQ0nGzプログラム側でメモリ不足をどうしようもないってのは、
カギを閉めても窓を割られたらどうしようもないから、その時は警備会社と警察に任せるよという程度に普通の発想だと思うが
つーかエラー表示をどうしたらいいかって質問でもないしな
0048デフォルトの名無しさん
2014/08/04(月) 15:59:27.42ID:jcCYniN9について質問している>>37にたいして
アスペは
「メモリを増やすしかない」
「警備会社に任せて事後処理するのが普通」
などとずれたことを言い出すから困る
0049デフォルトの名無しさん
2014/08/04(月) 20:48:03.69ID:UAhHAw7M>>37 の質問自体がちょっとずれてるから無問題
0050デフォルトの名無しさん
2014/08/04(月) 21:43:04.51ID:4x8QxR6V悩んでいます。とりあえずwinerror.hで定義されているエラーコードを
そのまま流用する方式で行こうかなと思うのですが、どうでしょうか?
return ERROR_SUCCESS;
みたいに。
他に良い方法ありますか?
0051デフォルトの名無しさん
2014/08/04(月) 21:47:18.34ID:NH51Dz+LWindows意外で使わないならそれでもいいんじゃない?
0052デフォルトの名無しさん
2014/08/04(月) 22:00:41.67ID:4x8QxR6Vレスありがとうございます。
Windows以外でも使う場合は、どうすればよいでしょうか?
0053デフォルトの名無しさん
2014/08/04(月) 22:02:28.90ID:LgeiXwf0>>42,43,44,46,47
できなかったらその時点でできる終了処理と通知して終了する事にするわ
>>44,49
> ・他(プロセス強制終了etc)
ってのは自分が思いつかない何かがあるかも知れないから書いただけで他意は無いよ
プロセス強制終了はetcつけたからわかると思ったけどあくまで例えね
0054デフォルトの名無しさん
2014/08/04(月) 22:34:49.43ID:UAhHAw7Mいや、例なのはわかってる
if( ) とか例外はメモリー確保失敗を検出する方法で、プロセス終了はそのあとの動作でしょ?
なので if( ) でチェックしてプロセス終了させるとかのように使うから、選択肢として並べるのはおかしい。
みんな親切だから、多分確保失敗時にどうするのが普通なのかを聞きたいんだろうなと、推測して答えてるんだろうと思う。
だから、誰も if( ) とか try に触れてないでしょ。
もしプロセス云々書いてないなら、好きにしろとか言われて終わってたと思うぞ。
0055デフォルトの名無しさん
2014/08/04(月) 22:36:00.54ID:eWAxusEw0056デフォルトの名無しさん
2014/08/04(月) 22:55:06.04ID:LgeiXwf0○○だからifの方が〜
××だからtry catchの方が〜
異常終了前は△△した方が〜
ってのを期待して3つ書いたけど
・判定は(if) or (try catch) どっちが主流か
・判定後から終了までの処理はどんな感じが主流か
って感じの書き方の方がよかったかな
3つから選んでって意味では無かったすまん
if or tryは好きにでいいのかありがとう
0057デフォルトの名無しさん
2014/08/04(月) 23:17:17.44ID:zBF47n0e0058デフォルトの名無しさん
2014/08/05(火) 05:27:27.61ID:B8XLPQcDそもそも確保に失敗することもないような。
それはさて、フェーズに分けて考えるなら、こんなもんだろ。
・検出
try catch
・対処
可能ならダイアログを出して異常終了
0059デフォルトの名無しさん
2014/08/05(火) 05:30:00.42ID:ANChekkV0060デフォルトの名無しさん
2014/08/05(火) 23:23:02.28ID:P2cYkmKJそもそも可能なのか知りたいのだが、可能な場合デバッガーでステップ実行
出来るのかな?
0061デフォルトの名無しさん
2014/08/05(火) 23:31:11.10ID:JYX/3P/hたぶん自分が何をしたいのかがよくわかってないと思う
ところでくぐるってなんだ?ググるのことか?
0062デフォルトの名無しさん
2014/08/05(火) 23:39:31.76ID:AfbB56Nf0063デフォルトの名無しさん
2014/08/05(火) 23:44:05.44ID:AfbB56Nf「コンパイラ・スクリプトエンジン」相談室16
http://peace.2ch.net/test/read.cgi/tech/1405822579/
0064デフォルトの名無しさん
2014/08/05(火) 23:48:46.07ID:P2cYkmKJレスありがとさん。
いや、そんな高度な事したいのではなく(やる知識もないので)、
やりたいのは
string s1="VBScriptファイルの1行目";
string s2="VBScriptファイルの2行目";
string s3="VBScriptファイルの3行目";
...
execute_VBScript(s1);
execute_VBScript(s2);
execute_VBScript(s3);
...
的な感じでいいんだけれど。
0065デフォルトの名無しさん
2014/08/05(火) 23:59:50.28ID:AfbB56NfこれはJScriptの場合だが(以下略
0066デフォルトの名無しさん
2014/08/06(水) 00:10:58.30ID:hW+yaDMzおお、サンキュウ。このページは初めて見る。
ちょっと試してみるわ。
0067デフォルトの名無しさん
2014/08/06(水) 00:28:06.25ID:hW+yaDMz0068デフォルトの名無しさん
2014/08/06(水) 00:29:28.55ID:hW+yaDMz0069デフォルトの名無しさん
2014/08/06(水) 00:43:44.34ID:ejJORmgK0070デフォルトの名無しさん
2014/08/06(水) 01:08:15.49ID:hW+yaDMz移植する能力が無いので困っている。
0071デフォルトの名無しさん
2014/08/06(水) 02:24:54.75ID:Rc+eyo3Sclass {
public:
void func(void);
};
このfuncをexeから利用する事ってどうやればできる?
それともfuncをクラス外に出すのが普通?
0072デフォルトの名無しさん
2014/08/06(水) 03:00:47.98ID:Wb6IUvWivsならこれでできる
0073デフォルトの名無しさん
2014/08/06(水) 03:28:23.21ID:q+H8JIOY.DEFなどによる名前でエクスポートする場合には使えないんじゃなかったっけ?
.libでエクスポートする場合DLLがアップデートされDLL内の(classのメンバ)関数の
アドレスが変わったらそれを使うEXE(やDLLなど)もリビルドが必要。
アプリのプラグインDLLやWindowsUpdateなど、DLLのみ差し替えても
EXE(やDLLなど)をリビルドせずそのまま使える "名前でのエクスポート" で
DLLを実装したいなら、仮想関数テーブルを挟むのがポイントですね。
※ ↓「サクラ」を「sakura」に変えてください(sakuraのURLを書こうとすると「さくらが咲いてますよ。」で書けない)
http://blackscarecrow.サクラ.ne.jp/junk/C&C++/PP03.htm
のサンプルコードが分かりやすいかも。
間違ってたらすみません。
0074デフォルトの名無しさん
2014/08/06(水) 07:17:14.75ID:PEaAzLNP>アドレスが変わったらそれを使うEXE(やDLLなど)もリビルドが必要
んなわけねーだろ
0075デフォルトの名無しさん
2014/08/06(水) 08:24:14.21ID:3bVUJ5Fe.defはたしかにC++では使えんが、dllexportならC++のクラスやメソッドも名前がexportされるから
別に問題じゃない。
#コンパイラの混在はできないが。
逆に仮想関数はvtable内の位置が変わるとまずいから、よくわかってないなら避けたほうが無難。
0076デフォルトの名無しさん
2014/08/06(水) 08:42:42.67ID:sXmmxXua古いVSに新しいVSで作ったDLLが結合できなかったりしそう
0077デフォルトの名無しさん
2014/08/06(水) 08:43:27.11ID:Wb6IUvWi0078デフォルトの名無しさん
2014/08/06(水) 13:48:02.21ID:hW+yaDMzMessageBox()を表示した時にタスクバーに表示されるアイコンを
指定する方法ありますか?
0079デフォルトの名無しさん
2014/08/06(水) 13:50:22.52ID:7Yid+G+a0080デフォルトの名無しさん
2014/08/06(水) 13:53:43.62ID:hW+yaDMz普通にやったらタスクバーにアイコンが出るんですが。
皆さん、出ませんか?
0081デフォルトの名無しさん
2014/08/06(水) 15:56:18.98ID:N2WBO7ykhWndを0にするとアプリと重なって出るけど…
0082デフォルトの名無しさん
2014/08/06(水) 16:10:52.00ID:WSzGEN/V入力画像が、複数あるテンプレート画像の中のどの画像と最もマッチングしているかをSURFを使って調べるにはどうしたらよいでしょうか。
よろしくお願いします。
0083デフォルトの名無しさん
2014/08/06(水) 16:12:58.71ID:3t2H8u7Iオーナーが NULL なら、タスクバーに積み重なってくけど、
非NULLなら タスクバー上には出ない
0084デフォルトの名無しさん
2014/08/06(水) 16:19:36.33ID:3t2H8u7Iここいらへん ttp://aidiary.hatenablog.com/entry/20091102/1257167398
から続けて読むともしかしたら
入力画像から得られる 特徴量ベクトル郡Vs
テンプレート画像の 特徴量ベクトル郡Vt x テンプレートの種類分
特徴量ベクトルのつきあわせ
0085デフォルトの名無しさん
2014/08/06(水) 20:02:55.18ID:hW+yaDMz現状はテキストファイルから読み込んでいる
のですが、それだとまる見えなので、プログラム中に
入れてしまいたいのですが、
char data[]="テキストファイルの中身をここに貼り付ける"
みたいな方法以外にお勧めな方法有りますか?
0086デフォルトの名無しさん
2014/08/06(水) 21:45:58.99ID:MTWJpzk30087デフォルトの名無しさん
2014/08/06(水) 22:21:35.52ID:1M326YIXWindows ならまずリソースに入れることを検討するのでは?
0088デフォルトの名無しさん
2014/08/06(水) 22:52:26.07ID:CTQUcynJという短絡的発想がバカっぽい
0089デフォルトの名無しさん
2014/08/06(水) 23:03:24.22ID:Rc+eyo3S0090デフォルトの名無しさん
2014/08/06(水) 23:08:55.87ID:PY3MTauC>>88 は観点がちょっとおかしい
0091デフォルトの名無しさん
2014/08/06(水) 23:53:57.11ID:l8HQ1jfJブーメラン乙
0092デフォルトの名無しさん
2014/08/07(木) 00:38:43.18ID:zC3TsviY0093デフォルトの名無しさん
2014/08/07(木) 01:19:10.54ID:1cACSwRnループの意味がわからん
>>89 と >>91 ならまだしも
0094デフォルトの名無しさん
2014/08/07(木) 01:54:45.98ID:3T9P4myyつ ユーザー定義リソース
何でも抱けるよ
0095デフォルトの名無しさん
2014/08/07(木) 08:15:40.74ID:OmP50o4uそうなんですか。訂正ありがとう。
>>75
名前がエクスポートされるって言っても、
「zzz@@aaa」とか記号の並んだ文字列として…じゃなかったかな?
あと、stdcallにすればコンパイラ混在しても大丈夫では?
たびたびスミマセン。
0096デフォルトの名無しさん
2014/08/07(木) 11:01:52.77ID:7UtLjkdTpDummyFuncがクラスのメンバ関数の場合どうすればいいかな?
0097デフォルトの名無しさん
2014/08/07(木) 11:33:51.91ID:JKDdryz1リソースファイルでうまく行きました。
0098デフォルトの名無しさん
2014/08/07(木) 11:42:42.26ID:qKlYqGRIstd::functionで
0099デフォルトの名無しさん
2014/08/07(木) 13:03:07.98ID:7UtLjkdTありがとう
関数ポインタpfuncがNULLの場合何もしないようにするのはどうすればいいかな
typedef VOID (WINAPI *Sample)(VOID)
((Sample)pfunc)()
この場合
if(pfunc == NULL) {
((Sample)pfunc)()
}
とするしかない?
というのは呼ぶ時に分岐するんじゃなくて内部で分岐させるために1つ関数挟んで
BOOL check(result, pfunc)
{
if(pfunc == NULL) {
return FALSE;
}
result = pfunc;
return TRUE;
}
if(((Sample)check(&result, pfunc))() == FALSE){
//nullだった
}
どうにかしてこんな感じにできないかな
0100デフォルトの名無しさん
2014/08/07(木) 13:17:50.40ID:7UtLjkdT正 if(pfunc != NULL)
誤 if(pfunc == NULL)
0101デフォルトの名無しさん
2014/08/07(木) 13:20:19.39ID:gf97lcsKcheck()の返り値はboolでしょ?
nullチェックはできるようだし何を聞きたいのかも分からん
■ このスレッドは過去ログ倉庫に格納されています