タグ付けされた質問 「standards-compliance」

22
C ++の「->」演算子とは何ですか?
StackаэтотвопросестьответынаStack Overflowнарусском:Чтотакоеоператор "->"вС++? 読んだ後に隠された機能とCのダークコーナー++ / STLのをcomp.lang.c++.moderated、私は完全に次のコードがコンパイルおよびVisual Studio 2008とG ++ 4.4の両方で働いていたことに驚きました。 コードは次のとおりです。 #include <stdio.h> int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 出力: 9 8 7 6 5 4 3 2 1 0 GCCでも動作するので、これはCだと思います。これは規格のどこに定義されており、どこから来たのですか?

13
別のhtmlフォーム内にhtmlフォームがあることは有効ですか?
次のものが有効なhtmlですか? <form action="a"> <input.../> <form action="b"> <input.../> <input.../> <input.../> </form> <input.../> </form> したがって、「b」を送信すると、内部フォーム内のフィールドのみが取得されます。「a」を送信すると、「b」内のフィールドを差し引いたすべてのフィールドが取得されます。 それが不可能な場合、この状況でどのような回避策を利用できますか?

18
HTML要素は複数のIDを持つことができますか?
IDはHTML / XHTMLページ内で一意でなければならないことを理解しています。 私の質問は、特定の要素に対して、複数のIDを割り当てることができるかどうかです。 <div id="nested_element_123 task_123"></div> クラスを使用するだけの簡単な解決策があることに気づきました。この方法でIDを使用することに興味があります。



3
サイトcoderbyteの「gets(stdin)」で何が起こっているのですか?
Coderbyteはオンラインコーディングチャレンジサイトです(2分前に見つけました)。 最初のC ++チャレンジには、変更が必要なC ++スケルトンがあります。 #include <iostream> #include <string> using namespace std; int FirstFactorial(int num) { // Code goes here return num; } int main() { // Keep this function call here cout << FirstFactorial(gets(stdin)); return 0; } C ++に慣れていない場合、最初に目につくのは*です。 int FirstFactorial(int num); cout << FirstFactorial(gets(stdin)); つまり、getsC ++ 11以降は非推奨であり、C ++ 14以降は削除されているコード自体が悪いコード呼び出しです。 …

11
main()は本当にC ++プログラムの始まりですか?
C ++標準のセクション$ 3.6.1 / 1は、 プログラムには、プログラムの指定された開始点であるmainと呼ばれるグローバル関数が含まれます。 今、このコードを考えて、 int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; } このサンプルコードは、私が意図することを実行します。つまり、プログラムの「開始」であるはずの関数に入る前に、0から9の整数の2乗を出力しますmain()。 また-pedantic、GCC 4.5.0オプションでコンパイルしました。エラーも警告もありません! …

2
nullインスタンスでメンバー関数を呼び出すと、未定義の動作が発生するのはいつですか?
次のコードを検討してください。 #include <iostream> struct foo { // (a): void bar() { std::cout << "gman was here" << std::endl; } // (b): void baz() { x = 5; } int x; }; int main() { foo* f = 0; f->bar(); // (a) f->baz(); // (b) } nullポインターに(b)対応するメンバーがないため、クラッシュすることが予想されxます。実際に(a)は、thisポインタは使用されないため、クラッシュしません。 ので(b)逆参照thisポインタ((*this).x = 5;)、およびthisnullであるヌルを逆参照することは、常に未定義の動作と言われているように、プログラムは、未定義の動作に入ります。 (a)未定義の動作につながりますか?両方の関数(およびx)が静的である場合はどうなりますか?


2
constexprはインラインを意味しますか?
次のインライン関数について考えてみます。 // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } そしてconstexprの同等バージョン: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int x); constexpr int f(const int x) { return 2*x; …

6
シェルスクリプトからWebブラウザーを起動するクリーンな方法?
bashスクリプトで、ユーザーのWebブラウザーを起動する必要があります。これを行うには多くの方法があるようです: $BROWSER xdg-open gnome-open GNOME www-browser x-www-browser ... これを行うには、ほとんどのプラットフォームで機能する、より標準的な方法がありますか?それとも、次のようなものを使うべきですか? #/usr/bin/env bash if [ -n $BROWSER ]; then $BROWSER 'http://wwww.google.com' elif which xdg-open > /dev/null; then xdg-open 'http://wwww.google.com' elif which gnome-open > /dev/null; then gnome-open 'http://wwww.google.com' # elif bla bla bla... else echo "Could not detect the web browser to use." …

5
Base64データを解析または検証するRegEx
RegExを使用してBase64データを検証またはサニタイズすることは可能ですか?それは簡単な質問ですが、この質問を駆り立てる要因はそれを困難にするものです。 私は、RFC仕様に従うために入力データに完全に依存することができないBase64デコーダーを持っています。したがって、私が直面している問題は、おそらくBase64データのように78に分割されない可能性がある問題です(78だと思います。RFCを再確認する必要があるので、正確な数値が間違っていても、私に指示しないでください)。行、または行がCRLFで終わっていない可能性があります。CRまたはLFのみの場合もあれば、どちらもない場合もあります。 そのため、このようにフォーマットされたBase64データを解析するのに時間を費やしました。これにより、次のような例では確実にデコードできなくなります。簡潔にするために、MIMEヘッダーの一部のみを表示します。 Content-Transfer-Encoding: base64 VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu わかりました、それで問題ない構文解析は、そしてまさに私たちが期待する結果です。また、99%の場合、コードを使用して、少なくともバッファー内の各文字が有効なbase64文字であることを確認すると、完全に機能します。しかし、次の例では、レンチを混ぜ合わせます。 Content-Transfer-Encoding: base64 http://www.stackoverflow.com VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu これは、一部のウイルスやその他のメールリーダーでMIMEを解析しようとする一部のウイルスやその他のもので見られたBase64エンコーディングのバージョンです。もしそうなら。 私のBase64デコーダーは、2番目の例を次のデータストリームにデコードします。ここで、元のストリームはすべてASCIIデータであることに注意してください。 [0x]86DB69FFFC30C2CB5A724A2F7AB7E5A307289951A1A5CC81A5CC81CDA5B5C1B19481054D0D 2524810985CD94D8D08199BDC8814DD1858DAD3DD995C999B1BDDC8195E1B585C1B194B8 誰もが両方の問題を一度に解決する良い方法を持っていますか?異なるルールが適用されたデータに対して2つの変換を実行し、結果を比較する以外に、それが可能かどうかさえわかりません。しかし、そのアプローチをとった場合、どの出力を信頼しますか?ASCIIヒューリスティックスが最善の解決策であるように見えますが、このコードが実際に関与しているウイルススキャナーのような複雑なものに、コード、実行時間、および複雑さがどれほど追加されるでしょうか。どのようにしてヒューリスティックエンジンをトレーニングして、許容可能なBase64とそうでないものを学習しますか? 更新: この質問が引き続き取得するビューの数に応じて、C#アプリケーションで3年間使用してきた数十万トランザクションの単純なRegExを投稿することにしました。正直、ガンボの答えが一番好きなので、それを選んだのです。しかし、C#を使用していて、少なくとも文字列またはbyte []に​​有効なBase64データが含まれているかどうかを検出するための非常に迅速な方法を探している人にとって、私は次のことがうまく機能することがわかりました。 [^-A-Za-z0-9+/=]|=[^=]|={3,}$ そして、はい、これはBase64データのSTRINGのためのものであり、適切にフォーマットされたRFC1341メッセージではありません。したがって、このタイプのデータを処理する場合は、上記のRegExを使用する前にそのことを考慮してください。Base16、Base32、Radix、またはBase64を他の目的(URL、ファイル名、XMLエンコーディングなど)で扱う場合は、Gumboが彼の回答で述べたRFC4648を読むことを強くお勧めします。この質問/回答セットの提案を使用する前に、実装で使用される文字セットとターミネータを認識してください。

1
ドットは正規表現の文字クラス(角括弧)でエスケープする必要がありますか?
.正規表現のドットは、任意の1文字と一致します。正規表現がドットと一致するためには、ドットをエスケープする必要があります。\. 角括弧の内側[]のドットはエスケープする必要がないことが指摘されています。たとえば、式: [.]{3}は...文字列に一致します。 ほんとに?もしそうなら、それはすべての正規表現標準に当てはまりますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.