【初心者歓迎】C/C++室 Ver.39【環境依存OK】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2007/07/16(月) 23:15:24
成功するファイル名についてです

成功するファイル名
AUDJPY-2002-03.txt
AUDJPY-2002-04.txt
CHFJPY-2002-03.txt
CHFJPY-2002-04.txt

失敗するファイル名
AUDJPY-2002-11.txt
AUDJPY-2003-03.txt
AUDJPY-2003-09.txt
CHFJPY-2002-11.txt
CHFJPY-2003-03.txt
CHFJPY-2003-09.txt

953デフォルトの名無しさん:2007/07/16(月) 23:20:33
エスパー降臨キボンヌ

地震きたー
954デフォルトの名無しさん:2007/07/16(月) 23:39:40
ファイルを確実に閉じたり開いたり出来る方法ないですか?
closeもopenもうまくいきません
955デフォルトの名無しさん:2007/07/16(月) 23:40:20
>>952
ソースうp
956デフォルトの名無しさん:2007/07/17(火) 00:00:34
VisualStudio.NET 2003 C++ XP SDK( MFCなどは使わず)

質問です
システムのミキサーの音量設定をプログラムから調整するにはどんなAPIを使ったらいいんでしょうか?。どなたかお願いします。m(__)m
957デフォルトの名無しさん:2007/07/17(火) 00:05:04
なんでコンパイラやらOSやらが頑張って表示してくれてるエラーメッセージを
さっくり無視するんだろうねえ
958デフォルトの名無しさん:2007/07/17(火) 00:06:26
>>956
APIスレ池
959デフォルトの名無しさん:2007/07/17(火) 00:08:20
>>954
普通に書けばうまくいくよ
君の書いたコードが悪い
960デフォルトの名無しさん:2007/07/17(火) 00:17:31
>>954
VC++8.0で日本語を含むファイルが開けないのなら、ロケールを設定汁
ウムラウトとかを含むファイルが開けないのなら、stdioやfstreamを
使うのは断念してCreateFileW()を使え
961デフォルトの名無しさん:2007/07/17(火) 00:20:02
同時に開ける数に制限があるとか 46個開くと次が駄目です
962956:2007/07/17(火) 00:26:31
>>958


スレ違いスマソ
963デフォルトの名無しさん:2007/07/17(火) 00:38:11
>>961
なんでそんなに同時に開く必要がある?
よほど大きいファイルを扱うんでなければメモリ上で処理すれば良いだけだと思うんだけど
何かそれ以外の制約でもあるんか?
964デフォルトの名無しさん:2007/07/17(火) 00:38:51
>>961はどうみても質問者ではないだろう
965964:2007/07/17(火) 00:39:56
と思ったけど、やっぱ質問者な気がしてきた


すまん
966デフォルトの名無しさん:2007/07/17(火) 00:46:42
全部で20ギガのテキストなんです・・・
それを約1000個のファイルに種類分けしたいんです・・
でも、CreateFileつかったら48個以上いけました!!
1000個同時に開けるかは不明です・・
967デフォルトの名無しさん:2007/07/17(火) 00:50:46
基本的にwindowsの関数の方が優れているんですかね???
968デフォルトの名無しさん:2007/07/17(火) 00:52:58
969デフォルトの名無しさん:2007/07/17(火) 00:56:03
>>968
CやC++の標準関数は安定してそうだけど実はwindowsXPの関数(API)の方が
いいんですかね??ってことですよ
windowsのユーザーは多いし、アップデートも頻繁だし
970デフォルトの名無しさん:2007/07/17(火) 00:58:34
>>969
安定してるとか、そういうことじゃないから。
C/C++ のライブラリ関数は OS の API を利用して作られている。
971デフォルトの名無しさん:2007/07/17(火) 01:02:03
>>969
ま、ケースバイケースだな。
標準関数は移植性が高いが、仕様が限定的で不便なこともある。出来ることも
限られている。

ファイルをあまり開けなかったりするのは、まあCランタイムの実装都合だな。
多分ファイル構造体配列をstaticに保持しており、その中の開きスロットを
見つけて使うような実装なんだろう。
一応FOPEN_MAXという定数が定められており、それを越えるファイルをstdioでは
同時に扱うことは保障されないと思っていい。
972デフォルトの名無しさん:2007/07/17(火) 02:11:16
(STLじゃなくて)C++の標準ライブラリ(ifstreamやstringなど)の豊富な説明が載ったWebサイトはありますか?
それとも、本を買って調べるべきですか?
973デフォルトの名無しさん:2007/07/17(火) 02:17:25
974デフォルトの名無しさん:2007/07/17(火) 02:18:07
windowsXPのコマンドプロンプトから、bcc32を使ってコンパイルしています。
const char a[] = "●○";
cout << char[1];
と出力させようとすると、おかしな表示になります。

日本語 出力 
const wchar_t a = L"●○";
wcout.imbue( locale("japanese") );
wcout << char[1];
としても駄目です。どうすれば良いでしょうか?
975デフォルトの名無しさん:2007/07/17(火) 02:19:32
char[1]じゃない。
a[1]だorz
976974:2007/07/17(火) 02:58:20
自己解決しました。

char *a[] = {"●","○"};
cout << a[1];
としたらできました。
ポインタで指定した文字列なら、普通に出力できる??? なんでだ。
977デフォルトの名無しさん:2007/07/17(火) 03:03:56
>>976
マルチバイト文字列だから。
978デフォルトの名無しさん:2007/07/17(火) 18:58:35
cコンパイラってすべてwindows APIを利用しているんですか??
アセンブラに翻訳してwindowsの機能は使わずcpuの機能を使っているのかとおもいました
979デフォルトの名無しさん:2007/07/17(火) 19:12:30
API使ってるのはファイル操作とかOS依存の部分だけ。
980デフォルトの名無しさん:2007/07/17(火) 19:18:09
サンクス
981デフォルトの名無しさん:2007/07/17(火) 22:13:50
質問です。
int main (){
int i = 0xFFF, i1;
unsigned char *ch = (char *)&i;
i1 = *ch;
printf ("i1=%X¥n",i1);
return;
}
このi1の値が0xFFになるはずなのですが、
0にしかなりません。
どうしてでしょうか?
982デフォルトの名無しさん:2007/07/17(火) 22:19:36
>>981
>このi1の値が0xFFになるはずなのですが
そんなこと決まってないよ。環境依存。環境は?
983デフォルトの名無しさん:2007/07/17(火) 22:20:13
> unsigned char *ch = (char *)&i;

この辺で何か変なことが起こってるんじゃないかと想像
unsigned char *ch = (unsigned char *)&i;
にしたらどうなる?
984デフォルトの名無しさん:2007/07/17(火) 22:22:01
とりあえず俺はFFになった。
985デフォルトの名無しさん:2007/07/17(火) 22:22:16
>>981
実はビッグエンディアンとか
環境はなに?
986デフォルトの名無しさん:2007/07/17(火) 22:26:41
そもそも
> unsigned char *ch = (char *)&i;
ではコンパイルできないんですが@VC2005
>unsigned char *ch = (unsigned char *)&i;
ならちゃんとコンパイルでき結果もFFになりますが…
987デフォルトの名無しさん:2007/07/17(火) 22:28:34
>986
どーせ拡張子がcppというオチ
988デフォルトの名無しさん:2007/07/17(火) 22:28:59
あ、そっか。
MacでPower PCだからならないのか。
Power PCってビックエンディアンだから。
すいませんでした。
989デフォルトの名無しさん:2007/07/17(火) 22:30:27
というか、printf中の\n(U+5C, U+6E)が¥n(U+A5, U+6E)になるのは、結構
書き込み環境としても珍しくない?
990デフォルトの名無しさん:2007/07/17(火) 22:57:06
VC++で純粋なC++プログラミングはできますか?
STLやらBOOSTやらがやりたいです。
991デフォルトの名無しさん:2007/07/17(火) 22:58:23
2005ならlambdaも普通に使えるよ
よかったね^^
992デフォルトの名無しさん:2007/07/17(火) 23:04:58
整数かどうかを判別する関数はisdigit()ですが、実数かどうかを判別する関数はないのでしょうか?
993デフォルトの名無しさん:2007/07/17(火) 23:08:25
isdigit()は整数じゃなくて、(10進数の)数字かどうか判定する関数じゃね?
994デフォルトの名無しさん:2007/07/17(火) 23:13:38
ということはisdigit(12)でもisdigit(0.34)でも10進数であれば1が返ってくるという感じですか?
995デフォルトの名無しさん:2007/07/17(火) 23:19:55
isdigit(x) は '0' <= x && x <= '9'と意味的に等価。
引数の「文字」が、'0' - '9'の範囲にあれば真。
12とか0.34がこの範囲に入るコードは見たことがないな。
996デフォルトの名無しさん:2007/07/17(火) 23:31:35
>>992
それがやりたいなら、こんな感じかなぁ
bool is_digit(int x) {return false; }
bool is_digit(float x) {return true; }
bool is_digit(double x) {return true; }
...

boostのtype_traitsにもっといいのがあるよ。
997デフォルトの名無しさん:2007/07/17(火) 23:37:55
996
998デフォルトの名無しさん:2007/07/17(火) 23:39:27
途中で送信してしまったorz

>>996
>>992のチェックしたいのは型でなく文字列じゃないか?
999デフォルトの名無しさん:2007/07/17(火) 23:47:41
やりたいこととしては、char配列の中の文字が数値であれば整数or実数どちらなのかを調べたい なんです。
1000デフォルトの名無しさん:2007/07/17(火) 23:51:29
1000だったらC++が崩壊して
Cが復権!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。