C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part150
https://mevius.5ch.net/test/read.cgi/tech/1584975873/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
テンプレここまで
探検
C++相談室 part151
■ このスレッドは過去ログ倉庫に格納されています
2020/05/14(木) 11:53:25.59ID:ZPCfyTux
2デフォルトの名無しさん
2020/05/14(木) 12:14:02.15ID:tvxDWcUo >>1
O2
O2
2020/05/14(木) 15:59:11.45ID:Qhhsb9+b
https://mevius.5ch.net/test/read.cgi/tech/1584975873/1000
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 15:51:59.69 ID:X1Z5LMNW [4/4]
> ん?
> >未だにC++03にしがみついているわけがない
> >>993で17使ってると言ってたようだが
>
> てかもうちょい生産的な話出来んのか
> 仕事でも趣味でも都合の良いコンパイラ使えばいいだけの話
> 構造化束縛をマクロとテンプレートで実現するとかなら面白い話題なんだけどな(面白いだけで実用性があるとは言ってない
なんだ、17で俺スゲーやってんのおまえじゃん
俺は仕事で17は当たり前という立場
おまえは仕事には危なくて使えないという立場
俺に教えを請うて突っぱねられたのがおまえ
あとはわかるな?
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 15:51:59.69 ID:X1Z5LMNW [4/4]
> ん?
> >未だにC++03にしがみついているわけがない
> >>993で17使ってると言ってたようだが
>
> てかもうちょい生産的な話出来んのか
> 仕事でも趣味でも都合の良いコンパイラ使えばいいだけの話
> 構造化束縛をマクロとテンプレートで実現するとかなら面白い話題なんだけどな(面白いだけで実用性があるとは言ってない
なんだ、17で俺スゲーやってんのおまえじゃん
俺は仕事で17は当たり前という立場
おまえは仕事には危なくて使えないという立場
俺に教えを請うて突っぱねられたのがおまえ
あとはわかるな?
2020/05/14(木) 16:04:10.28ID:X1Z5LMNW
5デフォルトの名無しさん
2020/05/14(木) 16:04:50.89ID:QxbT6fEj ホスト環境は17、組み込みは03で良いのでは?
2020/05/14(木) 16:06:44.92ID:Qhhsb9+b
2020/05/14(木) 16:07:42.33ID:Qhhsb9+b
2020/05/14(木) 16:44:48.92ID:7nN34odP
extern "C" 以下が、宣言になるなのか、定義になるのかについて、以下のページには、
extern "C" { int i; } と書くと、i は、「定義」される。
宣言で済ましたい場合には、
extern "C" { extern int i; }としなくてはならない。しかし、中括弧で囲まずに、
extern "C" int i;
と書いた場合には、i は「宣言」だけされる、とあります。
さらに、これは変数の場合で、関数の場合には、戻り値 関数名(仮引数列) の後に関数定義部の{・・・}
があるかどうかで宣言か定義かが変わるだけのようです。といいますか、関数の場合は、関数定義部
がなければ、「定義」しようがないのでそれは当然かもしれませんが(結構複雑です。)。
これらの動作について、cppreference などで述べられているページがあれば、
教えていただければ幸いです。
https://stackoverflow.com/questions/1041866/what-is-the-effect-of-extern-c-in-c
Note that extern "C" { int i; } is a definition.
This may not be what you intended, next to the non-definition of void g(char);.
To make it a non-definition, you would need extern "C" { extern int i; }.
On the other hand, the one-declaration syntax without braces does make the declaration a non-definition: extern "C" int i; is the same as extern "C" { extern int i; }
extern "C" { int i; } と書くと、i は、「定義」される。
宣言で済ましたい場合には、
extern "C" { extern int i; }としなくてはならない。しかし、中括弧で囲まずに、
extern "C" int i;
と書いた場合には、i は「宣言」だけされる、とあります。
さらに、これは変数の場合で、関数の場合には、戻り値 関数名(仮引数列) の後に関数定義部の{・・・}
があるかどうかで宣言か定義かが変わるだけのようです。といいますか、関数の場合は、関数定義部
がなければ、「定義」しようがないのでそれは当然かもしれませんが(結構複雑です。)。
これらの動作について、cppreference などで述べられているページがあれば、
教えていただければ幸いです。
https://stackoverflow.com/questions/1041866/what-is-the-effect-of-extern-c-in-c
Note that extern "C" { int i; } is a definition.
This may not be what you intended, next to the non-definition of void g(char);.
To make it a non-definition, you would need extern "C" { extern int i; }.
On the other hand, the one-declaration syntax without braces does make the declaration a non-definition: extern "C" int i; is the same as extern "C" { extern int i; }
2020/05/14(木) 17:19:49.87ID:7nN34odP
>>8
【関連事項】
[winnt.h の中]
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
[urlmon.h の中]
EXTERN_C const IID CLSID_CdlProtocol; // (100)
[考察]
(100)は、EXTERN_C のマクロ展開後
*pure C では、
extern const IID CLSID_CdlProtocol; // (101)
*C++ では、
extern "C" const IID CLSID_CdlProtocol; // (102)
となります。
(101)は明らかに(「定義」ではなく)「宣言」なので、モード間のバランスから考えて、
(102)も宣言でなくてはなりません。一方、
#ifdef __cplusplus
extern "C" {
#endif
int aaa;
#ifdef __cplusplus
}
#endif
と書いた場合、aaa は、どちらのモードでも「(変数)定義」であり、単なる「宣言」ではありません。
これは、(102)が「宣言」であることと、ある種の矛盾を生じているようですが、これが現状の
正しい解釈のようです。しかし、この事が cppreference のどこに書いてあるのかが分かりません。
【関連事項】
[winnt.h の中]
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
[urlmon.h の中]
EXTERN_C const IID CLSID_CdlProtocol; // (100)
[考察]
(100)は、EXTERN_C のマクロ展開後
*pure C では、
extern const IID CLSID_CdlProtocol; // (101)
*C++ では、
extern "C" const IID CLSID_CdlProtocol; // (102)
となります。
(101)は明らかに(「定義」ではなく)「宣言」なので、モード間のバランスから考えて、
(102)も宣言でなくてはなりません。一方、
#ifdef __cplusplus
extern "C" {
#endif
int aaa;
#ifdef __cplusplus
}
#endif
と書いた場合、aaa は、どちらのモードでも「(変数)定義」であり、単なる「宣言」ではありません。
これは、(102)が「宣言」であることと、ある種の矛盾を生じているようですが、これが現状の
正しい解釈のようです。しかし、この事が cppreference のどこに書いてあるのかが分かりません。
10デフォルトの名無しさん
2020/05/14(木) 17:25:47.90ID:xR/PZA9p 1回しか使われていない場合
2回以上使われている場合
「宣言」とは別に定義がリンクされている場合
2回以上使われている場合
「宣言」とは別に定義がリンクされている場合
2020/05/14(木) 17:33:00.93ID:7nN34odP
>>10
そういうことは理解しているつもりです。
extern ではなく、extern "C" の動作が、直後にブロックがあるかないかや、
変数か関数かによって、不思議な変化を見せることに興味があります。
そういうことは理解しているつもりです。
extern ではなく、extern "C" の動作が、直後にブロックがあるかないかや、
変数か関数かによって、不思議な変化を見せることに興味があります。
2020/05/14(木) 17:38:36.51ID:Qhhsb9+b
int aaa; //definition in C++, tentative in C
int aaa; //invalid in C++, valid in C
int aaa; //invalid in C++, valid in C
2020/05/14(木) 17:48:01.20ID:nTyJBG5I
クラスで定義された型を言語構文でバラして対応付けると言う非対称な気持ち悪さと
const, 非constを混在して受けられない不便さとがあるな
構造化バインディング
まーtuple限定ではなく構造体を対応付けられるから非対称ってわけでもないか
const, 非constを混在して受けられない不便さとがあるな
構造化バインディング
まーtuple限定ではなく構造体を対応付けられるから非対称ってわけでもないか
2020/05/14(木) 17:51:54.74ID:nTyJBG5I
2020/05/14(木) 18:15:11.62ID:7nN34odP
>>14
stackoverflow以外に、公式サイトでそれが書かれている場所を教えていただければ幸いです。
stackoverflow以外に、公式サイトでそれが書かれている場所を教えていただければ幸いです。
2020/05/14(木) 18:18:32.65ID:jF4/VTtK
cppreferenceは仕様書じゃないから書いてなくても不思議じゃないと思うけど。
仕様書見たら?ドラフト版はネットに転がってる
仕様書見たら?ドラフト版はネットに転がってる
2020/05/14(木) 18:25:58.94ID:7nN34odP
>>16
その公式アドレスを教えていただければ幸いです。
その公式アドレスを教えていただければ幸いです。
2020/05/14(木) 18:27:40.05ID:nTyJBG5I
>>15
cppreference.comに書かれてるぞ
cppreference.comに書かれてるぞ
2020/05/14(木) 18:28:39.75ID:nTyJBG5I
externの説明のnotesのところにな
2020/05/14(木) 18:32:35.87ID:jF4/VTtK
>>17
ggrks
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ
ggrks
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ
2020/05/14(木) 18:42:47.93ID:nTyJBG5I
つーか、cppreferenceに書いてあるのに見落としてよそのサイト教えろとか馬鹿丸出しで笑える
22デフォルトの名無しさん
2020/05/14(木) 18:45:51.63ID:QxbT6fEj バカにバカというのはバカ差別で違法だからね。
2020/05/14(木) 20:34:45.27ID:Qhhsb9+b
情報量ゼロのゴミレスでドヤ顔する自覚なきクズ大杉
20はggrksと言いながらちゃんとリンク貼ってる
20はggrksと言いながらちゃんとリンク貼ってる
24デフォルトの名無しさん
2020/05/14(木) 20:40:53.93ID:xR/PZA9p25デフォルトの名無しさん
2020/05/14(木) 20:46:17.52ID:QxbT6fEj26デフォルトの名無しさん
2020/05/14(木) 20:48:02.32ID:QxbT6fEj そういえば、チョンにチョンというのはチョン差別で違法だけど、日本人に日本人というのは別に問題ないね。
フランス人にフランス人というのも問題ないし、中国人に中国人というのも問題ない。
何が違うんだろ。
フランス人にフランス人というのも問題ないし、中国人に中国人というのも問題ない。
何が違うんだろ。
27デフォルトの名無しさん
2020/05/14(木) 20:51:04.91ID:QxbT6fEj チョンというのがダメなのかと思ったけど。
朝鮮人に朝鮮人というのも朝鮮人差別だから違法だよね。
ますますわからん。
朝鮮人に朝鮮人というのも朝鮮人差別だから違法だよね。
ますますわからん。
2020/05/15(金) 18:22:21.33ID:hNzctM0s
以下の混乱を、どう解決すべきか分かる人いますか?
・無名の共用体: 問題は特に有りません。
・無名の構造体: 入れ子の構造体(nested class)の「型定義」と区別が付かない気がします。
以下はその説明です :
class CPerson { // (1)
struct _TAaa { // (2)
・・・
}; // (3)
};
と書いた場合、(3) の部分にメンバ名が書かれていません。
しかし、これでは以下のどちらかなのか区別できない気がするのです。
a. CPerson の中に「無名ではあるが実態のあるメンバ」として「メンバ変数」を定義するつもり。
b. 単に、CPerson の class scope の中に _TAaa というタグ名を持つ構造体を「型定義」するつもり。
MSは、a の方針で、この形式 (2)〜(3) を、「anonymous structure」と定義しているらしいです。
しかし、C++ には、b の解釈の「nested class」という言葉も存在しています。
・無名の共用体: 問題は特に有りません。
・無名の構造体: 入れ子の構造体(nested class)の「型定義」と区別が付かない気がします。
以下はその説明です :
class CPerson { // (1)
struct _TAaa { // (2)
・・・
}; // (3)
};
と書いた場合、(3) の部分にメンバ名が書かれていません。
しかし、これでは以下のどちらかなのか区別できない気がするのです。
a. CPerson の中に「無名ではあるが実態のあるメンバ」として「メンバ変数」を定義するつもり。
b. 単に、CPerson の class scope の中に _TAaa というタグ名を持つ構造体を「型定義」するつもり。
MSは、a の方針で、この形式 (2)〜(3) を、「anonymous structure」と定義しているらしいです。
しかし、C++ には、b の解釈の「nested class」という言葉も存在しています。
2020/05/15(金) 18:32:30.47ID:OzObLB6i
>>28
自分でコンパイルしてどうなるか試したんだよな?
自分でコンパイルしてどうなるか試したんだよな?
2020/05/15(金) 18:39:41.33ID:7pqJGfJd
2に名前つけている時点で無名じゃない
2020/05/15(金) 18:44:03.32ID:hNzctM0s
>>30
なるほど。
なるほど。
32デフォルトの名無しさん
2020/05/16(土) 16:37:49.22ID:nLCzlpLv std::bitset を std::unordered_map か std::map のキーとして使用したいのですが、
どうすればよろしいのでしょうか?
どうすればよろしいのでしょうか?
2020/05/16(土) 16:40:58.20ID:hM/FmoW0
>>32 やってみて、何か問題あったの?
2020/05/16(土) 16:46:28.51ID:tFvEvqcA
std::unordered_map<std::bitset<42>, int> um;
um[std::bitset<42>("0011")] = 9999;
std::cout << um[std::bitset<42>("0011")] ;
普通に動いたぞ
何に困ってるんだ?
um[std::bitset<42>("0011")] = 9999;
std::cout << um[std::bitset<42>("0011")] ;
普通に動いたぞ
何に困ってるんだ?
35デフォルトの名無しさん
2020/05/16(土) 16:50:35.98ID:nLCzlpLv2020/05/16(土) 16:59:00.14ID:hM/FmoW0
>>35 エラーメッセージも貼って、エラーメッセージのわからないところも書いてくれるといいな。
37デフォルトの名無しさん
2020/05/16(土) 17:07:47.33ID:nLCzlpLv >>36
error C2676: 二項演算子 '<': 'const _Ty' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
with
[
_Ty=std::bitset<100>
]
message : クラス テンプレート メンバー関数 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のコンパイル中
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の関数 テンプレート インスタンス化 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のリファレンスを確認してください
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::less<std::bitset<100>>' のリファレンスを確認してください
message : コンパイルされている変数テンプレート 'const bool is_empty_v<std::less<std::bitset<100> > >' のリファレンスをご参照ください
message : コンパイル対象の クラス テンプレート インスタンス化 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>' のリファレンスを確認してください
with
[
_Kty=std::bitset<100>,
_Ty=int,
_Pr=std::less<std::bitset<100>>,
_Alloc=std::allocator<std::pair<const std::bitset<100>,int>>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::map<std::bitset<100>,int,std::less<std::bitset<100>>,std::allocator<std::pair<const std::bitset<100>,int>>>' のリファレンスを確認してください
error C2676: 二項演算子 '<': 'const _Ty' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
with
[
_Ty=std::bitset<100>
]
message : クラス テンプレート メンバー関数 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のコンパイル中
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の関数 テンプレート インスタンス化 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のリファレンスを確認してください
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::less<std::bitset<100>>' のリファレンスを確認してください
message : コンパイルされている変数テンプレート 'const bool is_empty_v<std::less<std::bitset<100> > >' のリファレンスをご参照ください
message : コンパイル対象の クラス テンプレート インスタンス化 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>' のリファレンスを確認してください
with
[
_Kty=std::bitset<100>,
_Ty=int,
_Pr=std::less<std::bitset<100>>,
_Alloc=std::allocator<std::pair<const std::bitset<100>,int>>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::map<std::bitset<100>,int,std::less<std::bitset<100>>,std::allocator<std::pair<const std::bitset<100>,int>>>' のリファレンスを確認してください
2020/05/16(土) 17:07:54.21ID:tFvEvqcA
わかった、std::mapだとダメなんだな
bitsetがoperator<持ってないからだ
これ定義すればmapでも通ると思うよ
template<>
struct std::less<std::bitset<100>>
{
bool operator()(const std::bitset<100>& lhs, const std::bitset<100>& rhs) const{ return lhs.to_ulong() < rhs.to_ulong();}
};
bitsetがoperator<持ってないからだ
これ定義すればmapでも通ると思うよ
template<>
struct std::less<std::bitset<100>>
{
bool operator()(const std::bitset<100>& lhs, const std::bitset<100>& rhs) const{ return lhs.to_ulong() < rhs.to_ulong();}
};
39デフォルトの名無しさん
2020/05/16(土) 17:08:13.11ID:nLCzlpLv といったメッセージが出ております。
40デフォルトの名無しさん
2020/05/16(土) 17:09:26.66ID:is04b0b3 >>35
a.insert( std::make_pair< FOO , BAR >( n, 100 ) );
a.insert( std::make_pair< FOO , BAR >( n, 100 ) );
2020/05/16(土) 17:09:55.37ID:tFvEvqcA
まあどうしてもmapにしたい理由がなけりゃおとなしくunordered_mapにした方がいいと思うけど
stdのテンプレートをstdのクラスで特殊化するのは本来は反則だし、unordered_mapの方がだいたい効率いいし
stdのテンプレートをstdのクラスで特殊化するのは本来は反則だし、unordered_mapの方がだいたい効率いいし
42デフォルトの名無しさん
2020/05/16(土) 17:16:42.14ID:uXmamJPc 普通に考えたらこれだろ。
std::make_pair( n, 100 )
std::make_pair( n, 100 )
43デフォルトの名無しさん
2020/05/16(土) 17:36:40.03ID:nLCzlpLv 皆さん。情報ありがとうございます。
>>38
試してみた所ビットを33個立てるとstd::overflow が出てしまうようです。
おそらく関数の仕様的な問題だと思うのですが……
>>40
a.insert( std::make_pair<std::bitset<MAX>, int>( n, 100 ) );
とやってみた所エラーが出てしまいました。
この辺の指定はコンパイラが勝手に行ってくれると思っていたのですが、
指定しなければならないのでしょうか?
>>41
std::unordered_map を利用するとうまくいきました。
ありがとうございます。
>>42
すみません。
>>40と同じ理由なのでしょうか?
>>38
試してみた所ビットを33個立てるとstd::overflow が出てしまうようです。
おそらく関数の仕様的な問題だと思うのですが……
>>40
a.insert( std::make_pair<std::bitset<MAX>, int>( n, 100 ) );
とやってみた所エラーが出てしまいました。
この辺の指定はコンパイラが勝手に行ってくれると思っていたのですが、
指定しなければならないのでしょうか?
>>41
std::unordered_map を利用するとうまくいきました。
ありがとうございます。
>>42
すみません。
>>40と同じ理由なのでしょうか?
2020/05/16(土) 17:50:14.76ID:qkv5Lv3o
bitset の値同士で < での比較ができないから map でエラーってことか。
unordered_map なら == で比較できれば使える、と。
unordered_map なら == で比較できれば使える、と。
2020/05/16(土) 18:00:40.13ID:tFvEvqcA
46デフォルトの名無しさん
2020/05/17(日) 14:06:29.05ID:7W3ntFmq ラムダ式にテンプレートの型指定ってできないんですかね?
auto f = []<class T>(T) {};
auto f2 = []<class T>() {};
f(1);
f2<int>();
fは引数にその型のパラメータがあるので大丈夫なんですけど、
f2だとコンパイルが通らないです...
auto f = []<class T>(T) {};
auto f2 = []<class T>() {};
f(1);
f2<int>();
fは引数にその型のパラメータがあるので大丈夫なんですけど、
f2だとコンパイルが通らないです...
2020/05/17(日) 14:12:23.12ID:ykqeUojC
ダミーの引数渡して
decltypeするとかすればいいんじゃね
decltypeするとかすればいいんじゃね
2020/05/17(日) 14:33:24.46ID:AX8hrxuQ
>>46
呼び出してるのはあくまでオーバーロードされた関数呼び出し演算子なので、こうする
f2.operator()<int>();
https://wandbox.org/permlink/uVSptZMZErNrL5p3
呼び出してるのはあくまでオーバーロードされた関数呼び出し演算子なので、こうする
f2.operator()<int>();
https://wandbox.org/permlink/uVSptZMZErNrL5p3
2020/05/17(日) 14:41:04.25ID:7W3ntFmq
>>48
なるほど!ありがとうございます!!
なるほど!ありがとうございます!!
50デフォルトの名無しさん
2020/05/18(月) 09:15:27.74ID:XEI7YtdQ なるほど
戻り値で判断するのも知りたい
戻り値で判断するのも知りたい
2020/05/18(月) 10:30:31.10ID:VVfIWrZc
>>46
auto仮引数ではあかんの?
auto f = [](auto arg) { cout << typeid(arg).name() << endl; };
f(1); //int
f(1.5); //double
auto仮引数ではあかんの?
auto f = [](auto arg) { cout << typeid(arg).name() << endl; };
f(1); //int
f(1.5); //double
52デフォルトの名無しさん
2020/05/18(月) 19:43:09.64ID:NOr8CY4q 以下のコードを実行すると 'あ' がアルファベットと判定されてしまうのですが、なぜかわかりますか?
Visual C++ 2019でもg++ 7.5.0でも結果は一緒でした(値は違いますが)。
std::locale loc("");
std::locale::global(loc);
std::wcout << std::isalpha(L'あ') << std::endl;
std::wcout << iswalpha(L'あ') << std::endl;
Visual C++ 2019でもg++ 7.5.0でも結果は一緒でした(値は違いますが)。
std::locale loc("");
std::locale::global(loc);
std::wcout << std::isalpha(L'あ') << std::endl;
std::wcout << iswalpha(L'あ') << std::endl;
2020/05/18(月) 20:28:29.14ID:SqFV2JvV
あはアルファベットだからだろう
2020/05/18(月) 20:49:09.32ID:vxC60pVH
というより、その判定結果だからこそあはアルファベットなんだよ
isalphaがtrueを返すものを現在のロケールにおけるアルファベットと呼ぶと言う方が正しいか
isalphaがtrueを返すものを現在のロケールにおけるアルファベットと呼ぶと言う方が正しいか
2020/05/18(月) 20:53:28.77ID:ah40zw28
いや、isalphaがtrueになる文字は各localeで決まっている
isalphaはそれを垂れ流しているだけ
isalphaはそれを垂れ流しているだけ
56デフォルトの名無しさん
2020/05/18(月) 21:32:06.39ID:cgM2dsGJ is_ascii_alpha()のほうが良く使う。
57デフォルトの名無しさん
2020/05/18(月) 22:16:41.22ID:NOr8CY4q ありがとうございます
普段は「日本語のアルファベット」とはあまり使わないけれど、
設定されている言語で表現するための文字のことをアルファベットと呼んでいると理解しておきます。
普段は「日本語のアルファベット」とはあまり使わないけれど、
設定されている言語で表現するための文字のことをアルファベットと呼んでいると理解しておきます。
2020/05/19(火) 03:42:01.59ID:dHzzm0xI
そもそも英語では普通にひらがなとカタカナを指して"Japanese alphabet"と呼ぶ
59デフォルトの名無しさん
2020/05/19(火) 10:55:08.90ID:h69Ba80R アルファベットはアラビア語が語源?
60デフォルトの名無しさん
2020/05/19(火) 10:56:23.71ID:h69Ba80R あと正確に言うなら日本語のアルファベットは
いろは
いろは
2020/05/19(火) 12:21:31.91ID:kOq4o5Tk
アルファベット=表音文字と言いたいの?
2020/05/19(火) 13:16:28.27ID:kUNy0nAn
stlを考えた人は馬鹿だからな。
2020/05/19(火) 13:40:15.28ID:kUNy0nAn
isalpha()が2バイト文字環境でいままで使われてきた経緯も知らずに勝手に仕様を変えてしまう馬鹿な人々。
min,maxも伝統的なマクロの存在を知らずに衝突させてしまう馬鹿。
さらに馬鹿なのはSTL作者達なのにコンパイラ処理系作者のせいにしてしまう愚かな烏合の衆たち。
min,maxも伝統的なマクロの存在を知らずに衝突させてしまう馬鹿。
さらに馬鹿なのはSTL作者達なのにコンパイラ処理系作者のせいにしてしまう愚かな烏合の衆たち。
2020/05/19(火) 13:44:38.41ID:JQlWutmQ
isalphaは昔のcでもlocale依存だろ
65デフォルトの名無しさん
2020/05/19(火) 14:25:44.49ID:O4jzhFRD STLは、なぜあの時代に、ここまで抽象化できたのか?彼らは宇宙から来たのではないか?などと考えてしまうが。
66デフォルトの名無しさん
2020/05/19(火) 14:27:12.72ID:O4jzhFRD Windows.hのmin、maxは困りものだよな。
2020/05/19(火) 14:51:53.51ID:oq2DQSv9
マクロでminmax書いているほうがどう考えてもバカだよな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機がレーダー照射 小泉防衛大臣の説明に「矛盾している」中国外務省報道官が批判 [♪♪♪★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- (´・ω・`)30万貸して
- 【悲報】小泉防衛大臣、中国のレーダー照射事件をNATO事務総長に報告 [834922174]
- 死にたい
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
- ( ・᷄ὢ・᷅ )寝るか
- ホロライブの天音かなたと角巻わためが不仲な理由ってなんなん???
