問題タブ [string-literals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
330 参照

c++ - このBoostC++正規表現コードの何が問題になっていますか?

含む

正規表現の何が問題になっているのか/から、許可されていないパスを取得する必要がありますか?Disallow: /

0 投票する
5 に答える
7435 参照

c - Cの文字列定数と文字列リテラルの違いは何ですか?

プレーンCの文字列定数文字列リテラルの違いは何ですか?

この質問は別の質問と似ています。文字列定数と文字列リテラルの違いは何ですか?...ただし、Objective-C(NSStringを使用)に関するものであり、Cに関するものではありません。

0 投票する
4 に答える
2897 参照

java - プライベート静的メソッド内の最後の文字列は、呼び出されたときに新しいオブジェクトをインスタンス化しますか?

プライベート静的メソッド内の静的finalStringは、呼び出されたときに新しいオブジェクトをインスタンス化しますか?

または、コンパイラは、メソッド内に文字列リテラルが1つしかないことを知っていますか?または、それをプライベート静的最終クラスフィールドにする必要がありますか?これは、クラス全体にコードを分散させることにより、読みやすさを低下させる効果があります。

0 投票する
2 に答える
655 参照

c# - 文字列リテラルと文字列C#を区別する

こんなことしたい

明らかな戻り値を持ちます。出来ますか?

0 投票する
8 に答える
3564 参照

c++ - c++: テンプレート パラメーターから文字列リテラルを生成する

ここで、 ...は "0 1 2 ... i-1" です。たとえば、 の場合は "0 1 2 3 4" ですi == 5

これは可能ですか?(実行時にこれを行うソリューションはありません!)

  • 好奇心から尋ねられた質問 (プリプロセッサ マクロ/定数でそれを行うのは簡単ですが、テンプレート パラメーターはどうですか)?
  • 意味は、コンパイル時に生成された文字列リテラルです。constこれは強制ではありませんが、文字列生成のために実行時に評価される関数を使用できることがわかりました。
0 投票する
2 に答える
3832 参照

javascript - JavaScript文字列内のエスケープされたhtml内の終了していない文字列リテラル

この値をエンコードすると、いくつかのjavascript文字列リテラルに問題が発生します。

エンコードされていない

私はこの値になります:

デコード

これは、一部のjavascriptコードでjavascriptリテラルとして使用されると、Firefoxはそれが終了していないと文句を言いますが、その理由はわかりません。

奇妙なことに、上記のhtmlから ""終了タグを削除する</script>と、エンコードされたバージョンは次のように正しく機能します。

エンコードされていない

エンコードされた

このエンコードされた値は機能します...

誰かが私が欠けているものを知っていますか?

アップデート

今ではかなり明白なようですが、私は睡眠不足のせいです。この場合、アプリケーションはJavaScriptのエンコードにJSON.Netの古いリリースに依存していたので、文字列用の新しいJsonConverterを導入して問題を回避しました。これは、クロージングのエスケープを処理しました。 JavaScriptエスケープが適用された後の2回目のパスのタグ。

0 投票する
3 に答える
1442 参照

c++ - U +は正確には何の略で、C ++アプリケーションでUnicode中間文字列のテーブルを作成できないのはなぜですか?

アプリケーションをJava+SwingからC+++Qtに変換しようとしています。ある時点で、私はいくつかのUnicode中間体を扱わなければなりませんでした。Javaでは、これはかなり簡単でした。

... C ++では問題が発生します:

次の形式の警告のヒープを取得したため、VS2008では\uを使用できませんでした。

ユニバーサル文字名'\u3042'で表される文字は、現在のコードページ(1250)では表現できません

そして、私を愚かとは言わないでください。私は[ファイル]-> [高度な保存オプション]を使用しようとしましたが、コードページはまったく変更されていないようです。これは既知の問題のようです:Visual C++2008でUTF-8文字列リテラルを作成する方法

私が使用しているテーブルはかなり短いので、Vimといくつかの入門レベルの正規表現マジックの助けを借りて、それを\ x30\x42表記に変換することができました。残念ながら、QStringsはそのような入力から適切に初期化されませんでした。私はすべてを試しました。fromAscii()、fromUtf8()、fromLocal8Bit()、QString(QByteArray)、動作します。次に、BOMなしでU + 3042をファイルに書き込んでから、16進モードで表示しようとすると、実際には「E38182」であることがわかりました。突然、このようなエントリはQString :: fromAscii()で機能するように見えました。ここで、「U+」は「U+ 3042」で正確にどのくらいの意味があるのか​​疑問に思います(0xE38182-0x3042 = E35140なので、このマジック定数をすべてのUnicode文字に追加したほうがいいでしょうか?)。適切なUTF-8文字列の配列を取得するには、ここからどのように進めればよいですか?

0 投票する
1 に答える
223 参照

java - Strings Literal Pool の例を理解する

この記事ScjpTipLine-StringsLiterallyによると、次のようないくつかの例をコーディングしていました。

出力は期待通りです:

ただし、上記のコードを少し変更すると、行が置き換えられます

あなたが得る

new String("someString");以来の予期しない出力です。JVM は、文字列リテラル プールのliteralString1literalString2を使用するのではなく、実行時にヒープに新しい String オブジェクトを作成する必要があります。

前もって感謝します

0 投票する
2 に答える
5487 参照

c++ - 競合:C ++標準およびWindows実装でのwchar_t文字列の定義?

c++2003から2.13

ワイド文字列リテラルのタイプは「<strong>arrayofn const wchar_t」であり、静的ストレージ期間があります。ここで、nは以下に定義されている文字列のサイズです。

ワイド文字列リテラルのサイズは、エスケープシーケンス、ユニバーサル文字名、およびその他の文字の総数に、終了するL'\0'の1つを加えたものです。

c ++0x2.14.5から

ワイド文字列リテラルのタイプは「<strong>arrayofn const wchar_t」です。ここで、nは以下に定義されている文字列のサイズです。

char32_tまたはワイド文字列リテラルのサイズは、エスケープシーケンス、ユニバーサル文字名、およびその他の文字の総数に、終了するU'\0'またはL'\0'の1つを加えたものです。

char16_t文字列リテラルのサイズは、エスケープシーケンス、ユニバーサル文字名、およびその他の文字の総数に、サロゲートペアを必要とする各文字に1つ、および終了u'\0'に1つを加えたものです。

C++2003の記述はかなりあいまいです。ただし、C ++ 0xでは、文字列の長さをカウントする場合、ワイド文字列リテラルwchar_tはchar32_tと同じように扱われ、char16_tとは異なります。

https://stackoverflow.com/questions/402283?tab=votes%23tab-topにWindowsがwchar_tを実装する方法を明確に述べた投稿があります

つまり、Windowsのwchar_tは16ビットであり、UTF-16を使用してエンコードされます。標準のステートメントは、明らかにWindowsで何か矛盾するものを残しています。

例えば、

これは16ビットを超えており、UTF-16の場合、エンコードするには2つの16ビットが必要です(サロゲートペア)。

ただし、標準では、kkは2つのwchar_tの配列です(ユニバーサル名\ U000E005の場合は1、\ 0の場合は1)。

ただし、内部ストレージでは、Windowsはそれを格納するために3つの16ビットwchar_tオブジェクト、代理ペア用に2つのwchar_t、および\0用に1つのwchar_tを必要とします。したがって、配列の定義から、kkは3つのwchar_tの配列です。

どうやら互いに矛盾しているようです。

Windowsの最も簡単な解決策の1つは、wchar_tでサロゲートペアを必要とするものをすべて「禁止」することです(BMP外のUnicodeを「禁止」する)。

私の理解に何か問題がありますか?

ありがとう。