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

このエントリーをはてなブックマークに追加
901デフォルトの名無しさん:04/10/09 13:36:48
Ruby >>>>>>>>>>>>>>>>>>>>>> ぼおst
902デフォルトの名無しさん:04/10/09 13:41:13
boost::filesystemな・・・ポータブルパスの書式は
ディレクトリの区切り文字が '/' になってややこすぃ。
"C:\Windows\system" は "C://Windows/system" とか。
うっかりネイティブ形式の放り込むと例外が飛んでくるんで注意!
でもディレクトリ移動が '/' 演算死を使って実装してあるのはちょっと感動した。
903デフォルトの名無しさん:04/10/09 14:13:28
>>900
標準関数として存在はしているが、
規格上はremoveはファイルを削除するように規定されてはいない。
そういう意味では>>894が正解。
あげあし取りでスマソ。

とりあえず参考ページ
http://www.bohyoh.com/CandCPP/C/Library/remove.html

実質的にはファイルの削除だ罠
904デフォルトの名無しさん:04/10/09 14:19:10
>>903
だから何?remove使って何か問題あるのかね?
905デフォルトの名無しさん:04/10/09 14:22:50
>>902
っつかWindows(DOS)って何でディレクトリの区切り文字を'\'にしたの?
ディレクトリはUNIXから拝借したんじゃないの?
906デフォルトの名無しさん:04/10/09 14:24:05
>>902
悪いオーバーロードの典型だな。
907デフォルトの名無しさん:04/10/09 14:30:46
http://pc5.2ch.net/test/read.cgi/tech/1096696253/
から来ました。

spawnlの使い方もしくは、外部のプログラムを実行して、そのプロセスを終了させないで、制御を元のプログラムに戻す方法を教えてください。

spawnl(_P_NOWAIT , "パス + 実行ファイル名" , "NULL");

としてもうまくいかず強制終了されてしまいます。
908デフォルトの名無しさん:04/10/09 14:32:45
>>907
なんで環境かかないかな
909デフォルトの名無しさん:04/10/09 14:34:38
>>905
オプションが'/'で始まる仕様だったから。

ファイルの概念の無い環境は知らんが、BTRONにはディレクトリの概念は無いよね。
#いやさ、リンクで擬似的に実現できるんだけど".."がお手上げでね。
910デフォルトの名無しさん:04/10/09 14:41:49
>>907
誘導したの漏れだけど、黙って移動するかな。おまけにこっちで環境書かないし。

で、改めて言うけどLSI-Cはやめとけ。ロングファイル名にも対応できないんだから。
911デフォルトの名無しさん:04/10/09 14:42:47
>>909
ほぅ
そこのボタンの掛け違いはいつ起こったんですか?
ご存知の方いるかな?
912デフォルトの名無しさん:04/10/09 14:43:25
> int getBar() const {return Bar;}

このconstってどういう意味?
913デフォルトの名無しさん:04/10/09 14:47:10
>>911
元々MS-DOSはUNIXじゃなくてCP/Mの真似だから。
つか、最初はディレクトリもなかったしな。
914デフォルトの名無しさん:04/10/09 14:48:11
mutable を見た PG を鬱にさせるおまじない
915デフォルトの名無しさん:04/10/09 14:48:44
>>913
CP/Mってオプションはやっぱ'/'だったんですかね?
916デフォルトの名無しさん:04/10/09 14:50:46
>>912
「getBarではメンバ変数(Barとか)に変更を加えない」という宣言
917907:04/10/09 14:54:00
黙っての移動すいませんでした。
以後気をつけます。

環境はボーランドのコンパイラです。
918デフォルトの名無しさん:04/10/09 14:54:59
>>916
おお、ありがと!
919デフォルトの名無しさん:04/10/09 14:55:16
>>915
CP-Mならよかったんだけどねぇ。
920デフォルトの名無しさん:04/10/09 17:11:11
絶対値を求める演算子を教えてください
調べても出てきませんでした
921デフォルトの名無しさん:04/10/09 17:15:15
文字列がatofで変換できるか調べるには
自前で関数用意するしかないですか?
922デフォルトの名無しさん:04/10/09 17:18:12
>>920
int型でいいならabs()関数
あとはMSDN見ればわかるだろう。
923デフォルトの名無しさん:04/10/09 17:20:10
>>922
MSDN使っていると言う前提は如何な最中。

>>921
「変換できるか」の定義に拠るが、strtod()を使えば文字列のどこまでを変換に使ったかは判る。

>>920
そういう演算子は無い。
924デフォルトの名無しさん:04/10/09 17:21:00
>>920
そういう関数でやれ。
<cstdlib>
int:abs
long:labs
long long:llabs

<cmath>
double:fabs
float:fabsf
long double:fabsl
925デフォルトの名無しさん:04/10/09 17:23:19
>>922
>>923
>>924
お返事ありがとうございます

abs()関数を使ってみます
926デフォルトの名無しさん:04/10/09 17:37:31
>>923
すいません、今携帯でかつ調べる手段がないのでその関数の詳細教えていただけますか?
因みに基準は文字列が数字とピリオド1つで構成されているかです。
927デフォルトの名無しさん:04/10/09 18:01:55
>>926
これなら携帯でも調べられるだろ。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtod.3.html
928デフォルトの名無しさん:04/10/09 18:28:01
>>923
927
解決しました。ありがとうございます。
929デフォルトの名無しさん:04/10/09 19:26:06
Kdevelop使ってる人いますか?
情報が少なすぎで困っています。
930デフォルトの名無しさん:04/10/09 20:06:35
関数の戻り値としてx座標とy座標の2つを指定できるのでしょうか?
いろいろな例をみていると1つしか指定できないみたいなので
(x、y)を戻り値として返すことはできるのでしょうか?
931デフォルトの名無しさん:04/10/09 20:11:51
void hoge(int *x, int *y);

or

class Point {
    int x_, y_;
    //blah, blah, blah
};

Point hoge();
932デフォルトの名無しさん:04/10/09 20:33:10
std::pair<int, int>とか
933デフォルトの名無しさん:04/10/09 20:40:41
>>930
C++だったら>>932がスマートだと思う。

Cだったら>>931の2つかグローバル変数しか方法はなさそう。
classじゃなくてstructしか使えないけど。
古いコンパイラだと構造体の実体は返せないので注意。
934デフォルトの名無しさん:04/10/09 20:49:34
>>931
>void hoge(int *x, int *y);
この方法は何という名の方法なんでしょうか
わからないので検索して調べてみたいのですが
なんて調べたらいいのかわからないもので…

>>932
調べてみます
>>933
c++.netなんですけどreturnで構造体をかえせるか試してみます

レスありがとうございました
935デフォルトの名無しさん:04/10/09 20:50:18
最近C++を学び始めたのですが二進数表示にするマニピュレータとかってないんでしょうか。
回転とかシフトなどビット単位で計算することってC++やCではよくあると思うのですが。
936デフォルトの名無しさん:04/10/09 20:53:55
返せないわけないだろ
937デフォルトの名無しさん:04/10/09 20:55:16
Cでint型をString型に変換するにはどうすればいいのでしょうか?
JavaでいうtoStringやParseIntみたいなAPIはあるのでしょうか?
938デフォルトの名無しさん:04/10/09 20:56:59
通は8進表示でビットデータを読みます
939デフォルトの名無しさん:04/10/09 20:58:11
>>937
sprintf関数?
940デフォルトの名無しさん:04/10/09 20:59:07
CにはString型はないんだけどsprintfでがんがれ

ほとんどの環境でitoaがあると思うけど。
941デフォルトの名無しさん:04/10/09 20:59:42
>>937
なんですか? String型って。
942デフォルトの名無しさん:04/10/09 21:00:57
>>940-941
多分managed C++のアレですよ。
943デフォルトの名無しさん:04/10/09 21:06:12
>>934
>void hoge(int *x, int *y);

「参照渡し」とかでぐぐれば見つかるんじゃない?
ポインタを理解してれば自動的に理解できると思うんだけど。
944934:04/10/09 21:19:47
>>936
安心して使ってみます
>>943
まだポインターは理解してないので
これから勉強しようと思います

レスありがとうございました
945デフォルトの名無しさん:04/10/09 22:50:19
>935
unsigned char型を2進表記しようとしてこんなん

unsigned char uchar = 'c';
for(short i=sizeof(unsigned char)*8-1; i>=0; --i){
if( (uchar>>i) & 1U ){
bset[index++] = 1;
}else{
bset[index++] = 0;
}
}

書いたことある。bsetはなんらかのbitsetのインスタンスね。
もっと簡潔にするなりテンプレート化するなりはだれか偉い人やって(;´Д`)
946デフォルトの名無しさん:04/10/09 23:07:18
charが8bitだと誰が決めたのか
947デフォルトの名無しさん:04/10/09 23:16:27
Rubuy ???????????????????????>>>>>>>>>>>>>>>
948デフォルトの名無しさん:04/10/09 23:36:05
>>945
こんなもんでどうよ。
コンパイラによっては警告くらいは出ちゃうかもしれんが。

unsigned char uchar = 'c';
_Bool bset[sizeof(unsigned char)*8];

for(int i=0; i<8; i++) bset[i++] = (((128>>i) & uchar)!=0);
949デフォルトの名無しさん:04/10/10 00:05:39
pppppuuuuuuuuuuuuuuuuuuuuuuuuuぷううううううううううううううううううううう
950デフォルトの名無しさん
>>935,945
…std::bitset::to_string()