[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/30 19:11 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.47【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1200464091/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


230 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:24:28 ]
>>226
それって問題あるのか?パッと見わからん

231 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:23 ]
>>230
char であるときには問題にはならないが int とかになると…

232 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:24 ]
>>230
>220にはこう書いてある。
>文字列nameの5文字目のポインタ(&(name[4]))をpiyoに格納したいです

233 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:31 ]
>>229
そうだな。揮発は性質で、蒸発は現象だからな。

234 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:27:47 ]
>>231
いや、だいじょうぶだろw
ちゃんとintの大きさに対応してくれるよw

235 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:27:55 ]
>>230
ポインタは自動的にそのサイズ分進むから、sizeofを掛ける必要はない、とかかな?

236 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:28:25 ]
>>234
ごめん間違えた

237 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:28:46 ]
ConceptGCCで、190のコードのofstreamとifstreamを
ostream&&とifstream&&にstatic_castしたものを食わせたらどうなるかと試してみたが、
エラーだったorz。右辺値参照はライブラリまで及んでいなかった。

238 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:06 ]
sizeof(*name)にするべきとか。



239 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:46 ]
>>238
阿呆ですか?

240 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:30:00 ]
>>219
適当に c 入門 初心者とかでぐぐれば環境の入れ方から説明してるとこがきっと見つかるよ

241 名前:203 mailto:sage [2008/02/09(土) 17:46:21 ]
>>225
>>240
すいません。もう一度調べなおしてみます。

242 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:47:29 ]
>>238-239
&5[name] でいいだろ。

243 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:49:48 ]
>>242
>232

244 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:58:03 ]
char ch='a';
cout <<(int) ch << '\n'; // 97
int dt=97;
cout << (char)dt<< '\n'; // 'a'
とできるのに、

wchar_t ch1='あ';
cout <<(int) ch1 << '\n'; // 33340
int dt1=33440;
cout << (wchar_t)dt1<< '\n'; // 0x82a0

と'あ'がでないで、82a0が出るのはなぜですか?
(82a0は33440の16進です)

245 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:03:03 ]
class test{
 char* str;
 int len;
public:
 test(const char* str);
};
test::test(const char* str0){
 len = strlen(str0);
 str = new char[len+1];
}

とすると
(msvcr80d.dll) でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xccccccc0 を読み込み中にアクセス違反が発生しました。
こんなようなエラーがでます、いろいろとコメントアウトして試してみていたのですが
str = new char[len+1];部分でエラーが出ているようです、これを
str = new char[256];のようにするとエラーはでないのですが、定数でなければならないとかないですよね?
一体なんででしょうか?

246 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:38 ]
書いてないところのバグを見つけろって言う話?

247 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:39 ]
>>245
そういう時は先ず、str0の長さが実際にいくつだったのかを確認しましょう。

248 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:53 ]
>>245
その部分は問題ないように見える。
256にするとエラーが出ないところからみて、
どこかでバッファオーバーフローしてるんじゃない?



249 名前:245 mailto:sage [2008/02/09(土) 18:12:34 ]
>>246-247
えっとすみません、str0には固定の文字を入れるようにして試しています
16文字の文字列でして、コンストラクタ内でlenの長さを表示させるときちんと16文字になっています。
また、同じくコンストラクタ内でstr0を表示させるときちんと渡した16文字の文字列が表示されます

250 名前:245 mailto:sage [2008/02/09(土) 18:15:42 ]
main内に
char* buff = "abcdefghijklmnop";
test hoge(buff);
これだけです
余計な部分を全てコメントアウトしてるのでこれでコードは全てです

251 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:16:08 ]
実行部分をみせろ。
test test1("abcdabcdabcdabcd");
ならまったく問題ないはず。

252 名前:251 mailto:sage [2008/02/09(土) 18:22:16 ]
ごめん、違うな

253 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:23:47 ]
>>245
そこを変えたら動くからといって、バグの出元がそこだとは限らない
ぜんぜん関係なさそうな別の場所も疑う必要がある

254 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:24:42 ]
strにはアクセスしないの?
test内でstrcpyしなくていいのか?
なにがやりたいんだ?

255 名前:245 mailto:sage [2008/02/09(土) 18:36:41 ]
>>253
提示した部分以外をコメントアウトしているのですがエラーが出る状態です

>>254
その部分が原因かとも疑ってコメントアウトさせているのですがエラーが出る状態です

test::test(const char* str0){
 len = strlen(str0);
 str = new char[len+1];
 strcpy_s(str, len+1, str0);
 printf("%s\n", str0);
 printf("%d\n", len);
 printf("%s\n", str);
}
こんな具合にしますと
abcdefghijklmnop
16
abcdefghijklmnop
と表示されますがしっかりエラーがでます

256 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:34 ]
mainってことは、MFCとかは使ってないわけか……
リビルドしたら直るとか言う落ちはないよな?

257 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:45 ]
>>255
余計なincludeもコメントアウト。
さらにエラーが無くなるまでコメントアウト。
新規プロジェクトと作成して、必要なコードだけ貼り付けて動かしてみる。

258 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:52 ]
おかしいなあ、ちゃんと動くぞよ。



259 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:46:07 ]
class test{
 char* str;
 int len;
public:
 test(const char* str);
};
test::test(const char* str0){
 len = strlen(str0);
 str = new char[len+1];
}

int main(int, char**)
{
char* buff = "abcdefghijklmnop";
test hoge(buff);
return 0;
}

これで、エラーになるって事?

260 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:53:05 ]
少なくともうちでは落ちない。

VC++ 2005 Express Edition SP1 + Win2KSP4

261 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:59:59 ]
>>255
どの行で例外発生してるか突き止めたのか?

262 名前:244 mailto:sage [2008/02/09(土) 19:00:55 ]
こちらもヨロ

263 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:02:03 ]
>>262
wchar_tがただのtypedefの環境ではそうなる。
VC++6とか。

264 名前:244 mailto:sage [2008/02/09(土) 19:05:57 ]
>>263
はい、VC++2005EEですので、
そういうものなのですね。
どうもでした。

265 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:06:46 ]
2005はさすがにtypedefじゃないんじゃないか?

266 名前:244 mailto:sage [2008/02/09(土) 19:10:30 ]
どうすれば確かめられますか?

267 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:14:15 ]
>>266
wchat_tとsizeofが一致するいろんな組み込み型とで、オーバーロードしてみる。

268 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:15:47 ]
wchar_tを組み込み型として扱うコンパイルオプションがあったはず



269 名前:244 mailto:sage [2008/02/09(土) 19:25:45 ]
>>267
すいません、よくわかりません。
>>268
MSDN
------
Visual C++ コンパイラ オプション
/Zc:wchar_t (wchar_t をネイティブ型として認識)
/Zc:wchar_t を指定しない場合は、wchar_t を定義するか、または
wchar_t が定義された多数のヘッダー ファイルのいずれか
(wchar.h など) をインクルードする必要があります。
通常、wchar_t は unsigned short として定義されます。
----
とあったので、このオプションをON/OFFしてみましたが、
結果は変わりませんでした。

270 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:50:27 ]
namespace hoge
{
 int main(int argc, char *argv[])
 {

 }
}

これをコンパイルすると、↓と言われます。どうすればいいですか?
error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。


271 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:51:37 ]
>>244
coutはワイド文字に対応していない。
wcoutを使えば良い。

wcout.imbue(locale(""));
wchar_t ch1= L'あ';
wcout << (int)ch1 << L'\n';
int dt1 = 12354;
wcout << (wchar_t)dt1 << L'\n';

272 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:52:06 ]
>>270 何がしたいのか考え直すといいです。

273 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:03:51 ]
>>270

namespace hoge
{
 extern "C" int main(int argc, char *argv[])
 {

 }
}

274 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:18:31 ]
テラ反則w

275 名前:244 mailto:sage [2008/02/09(土) 20:24:00 ]
>>271
動きました。
私のだと、いろいろな点で駄目でしたね。
ありがとうございました!

276 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:29:58 ]
ちょっとお尋ねしたいのですが、
char *p
というポインタに、なにかしらのアドレスが格納されていて、
cout << p;
とした時に、仮に
ss[100] = {a b, c ...}; (ss[100] = \0 とする)
p = ss;
だった場合は、ss[0]から順に\0が出てくるまで走査して、
cout << p;
で、abc... と表示するわけですよね。つまり配列の要素100個分順番に読み込んでるってことですよね。

では、もしポインタpに格納されているアドレスが普通の変数のアドレス
p = &a
みたいな場合だった時は、
cout << p;
では、単純に変数aのアドレスが出力されるだけですよね。

で、ここで疑問なのですが、
p = &a;
cout << p;
だった時、処理系はどうやってpが「変数」のポインタだと判断するのでしょうか??
「配列」のポインタの場合もあるので、何かしらの方法で判断していると思うのですが、
「メモリを順番に走査して\0が出てこなかったら変数のポインタ」だとしたら
毎回\0が出てくるまで番地を順番に走査していかなくてはならないので(\0が出て来ないかもしれないのに(変数の場合))何か違う気がします。
ポインタには、アドレスや型の情報だけではなくて、そのアドレスが変数のアドレスか、それとも配列の先頭アドレスかという情報も入っているんでしょうか?

277 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:30:49 ]
>>274
正しい。

278 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:43:53 ]
>>276
単に何の型のポインタになっているかで決まる。
型が char* のときとそれ以外の T* について
operator<< のオーバーロードが違うだけ。

  char a = 'A';
  char* p = &a;
  cout << p << '\n'
とすると確保されていない領域まで突き抜けて文字列が表示される (はず) 。




279 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:43:57 ]
>>276
コンパイルするときに決まる。
それがconst char*だったら文字列、void*だったらアドレスを表示する。
その他のポインタ型は多重定義解決の規則に従って、上のどっちかに振り分けられる。

280 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:47:05 ]
>>276

> p = &a
> cout << p;
> では、単純に変数aのアドレスが出力されるだけですよね。

(aがたとえば int であるとして。)
それは間違い。

> p = &a
これをやった時点でコンパイラは型が違うとエラーにする。
p = reinterpret_cast<&a>として無理やりキャストをしてpに int * の値を入れることは可能。

>処理系はどうやってpが「変数」のポインタだと判断するのでしょうか??
pを宣言する際に、その型を char* と指定しているから、pが実際にさす先に実際にあるものが
charの配列であっても、int型の値であっても、コンパイラはcharの文字列であると扱う。

aの値がたまたま有効な文字の文字コードと'\0'が並んだ物となっていれば、該当する文字列として表示されるし、
そうでなければ制御コードを出力したり文字化けしたりする。



281 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:58:25 ]
>>276は一貫してpをchar*として話しているのでは。
そうすると、
> p = &a
> みたいな場合だった時は、
> cout << p;
> では、単純に変数aのアドレスが出力されるだけですよね。
は間違い。
aが存在するメモリ位置から始めて、それ以降にたまたま存在するデータを、
無理やり文字列と解釈して出力するだけ。

282 名前:176 mailto:sage [2008/02/09(土) 21:37:59 ]
そーかそもそも文字列を扱うのはchar型だけだから、
<< がオーバーロードを利用してconst char*型だけ特別に扱うようにしている、ということですね。
ありがとうございましたm(_ _)m


283 名前:デフォルトの名無しさん [2008/02/09(土) 23:57:11 ]
こんにちは。角度の比較のよい方法が思いつかずに苦労しています。
 
角度A,B,Cがあって、BがAとCの中に入っているがを判定する式で悩んでいます。

角度系は時計の3時が0度、反時計回りに360まであります。
(CはAから見て反時計方向に92度離れています)

単純な比較式
A<B && B<C
とすると、A=350度、B=0度、C=30度のときうまく成立しません。

A,B,Cそれぞれがどの象限にいるかによって
判別式を変えることも考えたのですが、組み合わせを考えるとあまりスマートな方法とも思えません。

何か簡単な式などでBがはさまれていることを知る方法があれば教えていただけませんか?


284 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:00:30 ]
>>283
そもそもどんな値を入れたってぐるっと回ってくれば挟まれてると言えるが?
AとCの作る角の小さい方にBがあるかどうかを判定するってことでいいのか?
その場合、AとCが180度離れていればBはどのような値であっても挟まれていないと考えていいのか?

285 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:11:50 ]
>>283
Aが0度になるようにBとCを回転させればいいよ。

286 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:11:56 ]
>>284

> CはAから見て反時計方向に92度離れています
って記述があるからそれは気にしなくていいんじゃね?
> A=350度、B=0度、C=30度のときうまく成立しません。
ってのは例のつもりだろう。

287 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:15:25 ]
>>283
A' = A - A (=0), C' = C - A (=92), B' = B - A とすれば、
BがAとCの間 <=> B'がA'とC'の間

288 名前:デフォルトの名無しさん [2008/02/10(日) 00:15:56 ]
角度を図なしで表現すると難しいですね。 

AとCの作る角の小さいほうにBがあることを確認したい。
(大きい角のほうには「挟まれていない」という認識)

AとCは180度未満(想定は92度です)離れています。






289 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:21:23 ]
B-A, C-Aの角度を-180~+180に換算して、

C-A<B-A<0 または、 C-A>B-A>0なら、AとCの間にBがあるんじゃないかな。

290 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:22:38 ]
AとBの角度 + BとCの角度 < 180
なら挟まれてるよ。

291 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:32:45 ]
どなたか、助けてください。

#include <iostream.h>
#include <stdlib.h>

int main(void)
{
int i,n,*ptr;
cin >> n;
ptr = (int *)calloc(n,sizeof(int));

for(i=0;i<=n-1;i++)
{
cin >> *ptr;
ptr++;
}

for(i=0;i<=n-1;i++)
{
cout << i << "," << ptr << "," << *ptr << endl;
ptr++;
}
return 0;
}

うまく動きません。 orz... どこが間違ってるでしょうか?

292 名前:291 mailto:sage [2008/02/10(日) 00:38:34 ]
自己解決しますたw

293 名前:デフォルトの名無しさん [2008/02/10(日) 00:39:10 ]
すみません。理解できていません
>>287
A'=A-A = 350 - 350 = 0
C'=C-A = 30 - 350 = -320 = fmod( -320+360, 360) = 40
B'=B-A = 0 - 350 = -350 = fmod( -350 + 360, 360) = 10
としておいて A' < B' < C' ( 0 < 10 < 40)
と比較すればよいのでしょうか?

294 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:49:20 ]
C言語より数学を勉強しろよ

295 名前:デフォルトの名無しさん [2008/02/10(日) 00:49:21 ]
>>287
うまく行きました。皆さんありがとうございました


296 名前:デフォルトの名無しさん [2008/02/10(日) 00:58:44 ]
>>283
リーマン幾何学

297 名前:デフォルトの名無しさん [2008/02/10(日) 02:41:34 ]
C++で、以下のようなコードを見たのですが、

int res = 0;
int a = 0;
res >?= a;

こんな書き方はありえないですよね?
>?= の書き手の意図は res > a ? res = a: res
と思うのですが、macroによる置き換えも、>?=のような書き方に
対してはできないですよね?


298 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:49:35 ]
gcc拡張



299 名前:デフォルトの名無しさん [2008/02/10(日) 03:53:53 ]
>>298
マジで?
どういう奴ですか?
というか、手元のg++だとコンパイル通らないけど、、、
こんなソースです。(元のソースから問題部分だけ抜き出したもの)
int main(void)
{
int res = 0;
int a = 0;
res >?= a;
return 0;
}


300 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:58:31 ]
ちゃんとC++になってる?

301 名前:デフォルトの名無しさん [2008/02/10(日) 04:26:18 ]
>>300
こんな感じです。環境はlinuxです。(version 4.2.1)
$ cat test.cpp
int main(void)
{
int res = 0;
int a = 0;
res >?= a;
return 0;
}
$ g++ test.cpp
test.cpp: In function 'int main()':
test.cpp:5: error: expected primary-expression before '?' token
test.cpp:5: error: expected primary-expression before '=' token
test.cpp:5: error: expected `:' before ';' token
test.cpp:5: error: expected primary-expression before ';' token


302 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:39:32 ]
まったくの初心者なのですがC言語を勉強しようと思ってます
入門書で独習Cと独習C++がありますが、どちらを買えばいいでしょうか?
また他に良い入門書があれば教えて頂けませんか?

303 名前:デフォルトの名無しさん [2008/02/10(日) 08:42:31 ]
>>302
うすい本にしとけ あとはネットで調べればよい 100ページ以下が必須

304 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:43:31 ]
その二つだったら間違いなく独習C。

305 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:48:21 ]
>>302
言葉のあやなのかもしれないが
CとC++は別物だからね

306 名前:デフォルトの名無しさん [2008/02/10(日) 08:48:40 ]
日本語学者でなくてもしゃべれるのと同じ うすいやつにしとけ ネットで調べたページだけで勉強しても良い
なるべく動かし方がわかったらSTLに進むべき 
古典的なCプログラムのほとんどはSTLで簡単に書ける

307 名前:デフォルトの名無しさん [2008/02/10(日) 08:50:02 ]
たとえばクイックソートや、スタックや、日本語処理など面倒なプログラムは勉強しなくてもSTLなどで置き換えられる

308 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:54:23 ]
unicodeもろくに扱えない糞ライブラリがナニ言ってるんだか



309 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:03:20 ]
>とにかく薄いやつ
これには同意。
入門書で分厚いの買ってもダラダラ無駄に難しく書いてるだけで理解しにくいだけ
基礎中の基礎さえ理解したら実際作って必要になった処理をネットで調べる方がいい

310 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:20:07 ]
STLってunicode扱えないんだっけ?

311 名前:デフォルトの名無しさん [2008/02/10(日) 09:21:58 ]
つかえる 一語が判別できないのは charでもおなじ

312 名前:デフォルトの名無しさん [2008/02/10(日) 09:41:39 ]
ここ勉強すれば良いよ

www.geocities.co.jp/SiliconValley-Bay/8490/c/index.html
rina.jpn.ph/~rance/c_language/index.html
www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html

313 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:54:05 ]
>>310
STLに限らずC++にろくなUnicodeサポートがないというだけのこと。
特に気にする必要はない。気にするな。
ただのwchar_tか何かをコンテナに突っ込んで使うだけだ。

314 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:59:53 ]
ああそういうことか
STLが何か文字コードに依存してるのかと思ったよ

315 名前:デフォルトの名無しさん [2008/02/10(日) 10:01:29 ]
たとえば10文字目が何バイト目とか判別できないだけ

316 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:20:58 ]
>>301
GCC 4.0.4, 4.1.2 と 4.2.3 のマニュアルには...

| The G++ minimum and maximum operators (‘<?’ and ‘>?’) and
| their compound forms (‘<?=’) and ‘>?=’) have been deprecated
| and will be removed in a future version. Code using these operators
| should be modified to use std::min and std::max instead.

[Excite 翻訳]
| そして、'G++最小の、そして、最大のオペレータ、(‘<?'、‘>、'、)、
| 彼らの合成フォーム(‘<?=')と‘>=') 非難して、将来のバージョンで取り
| 除くでしょう。 これらのオペレータを使用するコードはstdに以下を使用
| するように変更されるべきです:分とstd:、:代わりに最大限にしてください。

となってるから、4.2.1 なら使えるはずだが、なんかオプションがいるのかも
しれないな。

ちなみに 4.0.4 の一つ前の 3.4.6 のマニュアルには '>?=' 自体の説明がな
いから、実験的に付け加えられた拡張に思える。

317 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:36:34 ]
excite翻訳ひどいなw
g++の最小・最大演算子とその合成形はすでに非推奨であり
将来のバージョンでは廃止されます。これらの演算子を使用
しているコードは代わりに std::min と std::max を使用するように変更すべきです。

318 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:03:47 ]
T"なんたら"

L"なんたら"
に置き換えるマクロはどう書くですか?



319 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:04:42 ]
#define T Lでできなければ無理。
Windowsは関数形式のマクロにして対処している。

320 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:13:50 ]
template<class L>

321 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:17:02 ]
gcc だと wchar_t は4バイトで UTF-32 を入れるようになっている。
wchar_t はあくまでその環境で扱える最大の文字コードを格納できる文字型でしかなく、
2バイト固定でもなければ UTF-16 や UCS-2 専用のものでもない。

C++0x ではそこんとこ困るってことで
UTF-16 と UTF-32 を直接サポートするようになる予定のようだ。
また VC++ が対応遅らせそうな気がして憂鬱になるが。

322 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:36:12 ]
NT3.1時代からUnicode使ってきたOSに従うべき。

323 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:33:02 ]
先日こちらでアドバイスをいただき、プログラムを
書いてみました。学校でできなかった分を家で作成しようと
ソースを持ち帰ったのですが文字化けしてしまい開くことが
できなくて困っています。

学校では秀丸エディタで「.cpp」の拡張子で保存をして
gccでコンパイルをしているようなのですが、同じ様な
環境を作ることは可能なのでしょうか?

winのメモ帳でも開けるものだと思っていたので困っています。
どうかよろしくお願いします。

324 名前:291 mailto:sage [2008/02/10(日) 13:34:37 ]
おそらく文字コードが違うんだろ。
nkf使うか、メモ帳以外のエディタでソースコード見れ

325 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:36:29 ]
まずはまともなエディタを使うんだ
秀丸にあわせるのがよいかと思うがサクラエディタなど他にもいろいろある

*.cppをgccでコンパイルというのもなんか引っかかるが・・・

326 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:37:13 ]
>>323
秀丸のエンコーディングを一時的に変えるか、まともなフリーなエディタを拾って使えばいいんでない?

327 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:56:49 ]
つーかC/C++全然関係ない問題なのなw

328 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:42:18 ]
回答いただきありがとうございます。
327さんの仰るとおり、C以前の問題でした申し訳ありません。

>>325
gccでコンパイルというのは、なにかおかしいのでしょうか?
コンパイル時のコマンドがそのようなコマンドを入力すると
教えられたのです。

まずはエディタを探してみることからはじめてみます。
ありがとうございました。



329 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:48:08 ]
.cppなら普通gccではなくg++を使う。

330 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:55:04 ]
結局はgccだけどな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef