【初心者歓迎】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もうまくいきません
956 :
デフォルトの名無しさん:2007/07/17(火) 00:00:34
VisualStudio.NET 2003 C++ XP SDK( MFCなどは使わず)
質問です
システムのミキサーの音量設定をプログラムから調整するにはどんなAPIを使ったらいいんでしょうか?。どなたかお願いします。m(__)m
なんでコンパイラやらOSやらが頑張って表示してくれてるエラーメッセージを
さっくり無視するんだろうねえ
>>954 普通に書けばうまくいくよ
君の書いたコードが悪い
>>954 VC++8.0で日本語を含むファイルが開けないのなら、ロケールを設定汁
ウムラウトとかを含むファイルが開けないのなら、stdioやfstreamを
使うのは断念してCreateFileW()を使え
961 :
デフォルトの名無しさん:2007/07/17(火) 00:20:02
同時に開ける数に制限があるとか 46個開くと次が駄目です
962 :
956:2007/07/17(火) 00:26:31
>>961 なんでそんなに同時に開く必要がある?
よほど大きいファイルを扱うんでなければメモリ上で処理すれば良いだけだと思うんだけど
何かそれ以外の制約でもあるんか?
965 :
964: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の関数の方が優れているんですかね???
?
969 :
デフォルトの名無しさん:2007/07/17(火) 00:56:03
>>968 CやC++の標準関数は安定してそうだけど実はwindowsXPの関数(API)の方が
いいんですかね??ってことですよ
windowsのユーザーは多いし、アップデートも頻繁だし
>>969 安定してるとか、そういうことじゃないから。
C/C++ のライブラリ関数は OS の API を利用して作られている。
>>969 ま、ケースバイケースだな。
標準関数は移植性が高いが、仕様が限定的で不便なこともある。出来ることも
限られている。
ファイルをあまり開けなかったりするのは、まあCランタイムの実装都合だな。
多分ファイル構造体配列をstaticに保持しており、その中の開きスロットを
見つけて使うような実装なんだろう。
一応FOPEN_MAXという定数が定められており、それを越えるファイルをstdioでは
同時に扱うことは保障されないと思っていい。
(STLじゃなくて)C++の標準ライブラリ(ifstreamやstringなど)の豊富な説明が載ったWebサイトはありますか?
それとも、本を買って調べるべきですか?
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];
としても駄目です。どうすれば良いでしょうか?
char[1]じゃない。
a[1]だorz
976 :
974:2007/07/17(火) 02:58:20
自己解決しました。
char *a[] = {"●","○"};
cout << a[1];
としたらできました。
ポインタで指定した文字列なら、普通に出力できる??? なんでだ。
978 :
デフォルトの名無しさん:2007/07/17(火) 18:58:35
cコンパイラってすべてwindows APIを利用しているんですか??
アセンブラに翻訳してwindowsの機能は使わずcpuの機能を使っているのかとおもいました
API使ってるのはファイル操作とかOS依存の部分だけ。
980 :
デフォルトの名無しさん:2007/07/17(火) 19:18:09
サンクス
質問です。
int main (){
int i = 0xFFF, i1;
unsigned char *ch = (char *)&i;
i1 = *ch;
printf ("i1=%X¥n",i1);
return;
}
このi1の値が0xFFになるはずなのですが、
0にしかなりません。
どうしてでしょうか?
>>981 >このi1の値が0xFFになるはずなのですが
そんなこと決まってないよ。環境依存。環境は?
> unsigned char *ch = (char *)&i;
この辺で何か変なことが起こってるんじゃないかと想像
unsigned char *ch = (unsigned char *)&i;
にしたらどうなる?
とりあえず俺はFFになった。
>>981 実はビッグエンディアンとか
環境はなに?
そもそも
> unsigned char *ch = (char *)&i;
ではコンパイルできないんですが@VC2005
>unsigned char *ch = (unsigned char *)&i;
ならちゃんとコンパイルでき結果もFFになりますが…
>986
どーせ拡張子がcppというオチ
あ、そっか。
MacでPower PCだからならないのか。
Power PCってビックエンディアンだから。
すいませんでした。
というか、printf中の\n(U+5C, U+6E)が¥n(U+A5, U+6E)になるのは、結構
書き込み環境としても珍しくない?
990 :
デフォルトの名無しさん:2007/07/17(火) 22:57:06
VC++で純粋なC++プログラミングはできますか?
STLやらBOOSTやらがやりたいです。
2005ならlambdaも普通に使えるよ
よかったね^^
992 :
デフォルトの名無しさん:2007/07/17(火) 23:04:58
整数かどうかを判別する関数はisdigit()ですが、実数かどうかを判別する関数はないのでしょうか?
isdigit()は整数じゃなくて、(10進数の)数字かどうか判定する関数じゃね?
994 :
デフォルトの名無しさん:2007/07/17(火) 23:13:38
ということはisdigit(12)でもisdigit(0.34)でも10進数であれば1が返ってくるという感じですか?
isdigit(x) は '0' <= x && x <= '9'と意味的に等価。
引数の「文字」が、'0' - '9'の範囲にあれば真。
12とか0.34がこの範囲に入るコードは見たことがないな。
>>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にもっといいのがあるよ。
996
999 :
デフォルトの名無しさん:2007/07/17(火) 23:47:41
やりたいこととしては、char配列の中の文字が数値であれば整数or実数どちらなのかを調べたい なんです。
1000だったらC++が崩壊して
Cが復権!!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。