問題タブ [widestring]
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.
c++ - ワイド文字列またはワイド文字配列を単純な文字配列に変換する最も簡単な方法は?
私の変数は、ワイド文字列の特定の内部実装にありますが、ワイド文字配列にするのは非常に簡単です。問題は、文字配列のみを受け入れるライブラリ関数にフィードする必要があることです。
だから私は次のようになります:
それで、簡単な方法はありますか、それとも文字ごとに手動で行うべきですか?
c - fwprintf はワイド文字を出力しません
ワイド文字をファイルに出力したいのですが、fwprintf
それを行うと説明されていますが、それを行いません。サンプルコード:
その後、私のファイル「wideTestFile.txt」には正確に5バイトが含まれています.1631 32 33 34 35
進ダンプユーティリティによると。
おそらく追加の引数としてロケールを取る をfwprintf
呼び出すように、現在のロケールに何らかの問題があると思われます。fwprintf_l
その最後の呼び出しの使用方法について読んでいますが、ロケールとして何を渡す必要があるかを理解できません。ドキュメントはそれについてかなり曖昧です(または、おそらく私はそれを理解できません)。
fwprintf
文書化されたとおりに動作しない理由はありますか? の使用例はありますfwprintf_l
か?
どうもありがとう、
JD
これは、Objective-C コードから iOS 6.0 をターゲットとする Mac OS X 10.8.2 の下の Xcode 4.5.1 です。しかし、それは本当に重要ではありません。
c++ - C ++のLプレフィックスとは正確には何ですか?
私はそれが何をするのか理解しています:文字列リテラルconst wchar_t *
を(プレーンな古い文字)ではなく(ワイド文字文字列)として指定しますconst char *
が、実際にはどのように定義されていますか?
それはある種のマクロですか?GCCコンパイラの演算子ですか?それはなんですか?
c++ - テンプレートchar/wchar_t、string / wstring、cout / wcout、regexp / wregex(または可能な回避策)
私はとを扱っていchar
ますwchar_t
。
いくつかの文字列に(ブースト付きの)正規表現を追加するヘルパー文字列クラスを作成していますが、との両方がstring
ありwstring
ます。これで、機能ごとにコードが重複した2つの関数ができました。
動作しますが、重複したコードを削除するための洗練されたメソッド(テンプレート?いくつかのoopマジック?関数ポインター?)を探しています。
delphi - Delphiでエスケープされたワイド文字列をエスケープ解除する方法は?
一部のワイド文字列には でエスケープされた文字が含まれています。例: ワイド文字列のソースは次のようになります:'   '
変換結果は ' '
(3 つの空白スペース) にする必要があります。
関数は次のようになります
注: 1) Delphi 7 を使用しています。
2) このワイド文字列は、HTML ではなく SOAP 応答の一部です。
3) 一般に、このメソッドはワイド文字列の一部として英数字を受け入れる必要があります: 入力例 :='be @' 結果 := 'be @'
c++ - c++でシングルバイト文字列をワイド文字列に変換する方法は?
私はエンコーディングを知っており、入力文字列は 100% 1 バイトであり、utf などの派手なエンコーディングはありません。必要なのは、既知のエンコーディングに基づいて wchar_t* または wstring に変換することだけです。使用する機能は? btowc()
そしてループ?おそらく、文字列オブジェクトには何か便利なものがあります。多くの例がありますが、すべて「マルチバイト」または btowc() を使用した派手なループ用であり、実際にこの関数が機能していることを画面に表示する方法のみを示しています。そのようなバッファを処理する方法の深刻な例は見たことがありません状況では、常にワイド文字は単一の文字列よりも 2 倍大きいですか?
c++ - wregex オブジェクトを初期化しようとすると、boost の regex_traits_defaults.hpp で縮小変換警告が表示される
最初の行は正常にコンパイルされます。2番目も実行中のEXEを生成しますが、さらに次の大きなエラーが発生します:
コード:
ブースト: http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z
c++ - wcout を使用して L"أَبْجَدِيَّة عَرَبِيَّة 中文" を表示するには?
wcoutを使ってアラビア語と中国語が混ざったメッセージを表示したいです。
次のコードは問題ありません。
ただし、次のコードは機能しません。
ユニコードの採用後、コードページの概念は廃止されるべきだと思います。
Q1. wout がそのようなテキストを表示するメカニズムは何ですか?
Q2. Unicode ベースの OS である Windows が、コンソール ウィンドウでの Unicode 文字の出力をサポートしていないのはなぜですか?
delphi - Delphi 7 で DelphiXE2 dll を呼び出すと、ワイド文字列が破損する
使用可能な SOAP インポーターには新しすぎる SOAP API を呼び出す必要がある Delphi 7 アプリケーションがあります。私は、D7 が SOAP API を呼び出すには多大な労力が必要であることに満足しています。しかし、私は Delphi XE2 も持っており、SOAP をインポートして非常にうまく呼び出すことができます。そこで、soap インターフェイスの必要な部分を公開する単純な dll ラッパーを XE2 で作成しました。XE プログラムから dll を呼び出すことができます。
Delphi7 では、XE から SOAP API インポート ファイルを取得し、{$SCOPED_ENUMS ON} 定義と、使用できない SOAP ラッパーを呼び出す初期化セクションを削除し、文字列全体をワイド文字列に変更しました。それはコンパイルされます。文字列の受け渡しを機能させ、すべてを stdcall にすることを避けるために、ShareMM を有効にして FastMM を使用しています。
私がこのようにしようとしている理由は、コードの 90% が XE2 SOAP インポーターによって生成されるため、それが機能する場合、SOAP shim のコーディングと保守が非常に簡単になるためです。 D7 アプリを最新の Delphi に移行します。コードはほとんど変更されません。
しかし、実行すると、奇妙な文字列が表示されます (結果としてアクセス違反が発生します)。問題をより明確にするために、SOAP コードを使用しない単純な関数があります。
Delphi7 exe から DelphiXE2 dll にワイド文字列を渡すと、文字列の長さは 2 倍になります (Length() 関数による) が、一致するデータ変換はありません。したがって、D7 のワイド文字列 "123" は XE2 では "1234...." になります。ここで、.... はたまたまスタックにあるガベージです。バイト配列として表示すると、両方とも期待どおり半分ゼロのバイトを持ちます。
XE2 dll から D7 にワイド文字列を渡すと、ミラー効果が得られます。文字列の長さは半分になり、文字列は単純に切り捨てられます ("1234" は "12" になります)。
あなたがそれを要求することを知っているので、コードを貼り付けています。
Delphi XE2 では、次の関数をエクスポートしています。
Delphi 7 では:
D7 実行可能ファイルをホスト アプリとして使用して dll をデバッグし、どちらの側からでも実行できます。デバッガーでパラメーターと戻り値を調べると、上記の結果が得られます。
厄介なことに、delphi7 でインポートを文字列として宣言すると、正しい長さで無効なデータが得られます。示されているように宣言すると、返そうとすると、有効なデータ、間違った長さ、およびアクセス違反が発生します。
すべて stdcall にしても、動作は変わりません。
明らかな解決策は、私が今必要としている機能を正確に公開する単純なラッパー関数を作成することです。私はそれを行うことができますが、上記の狡猾な方法を好みます。
c++ - Delphi DLL を使用する C++
Delphi で開発された dll の機能を使用できません。型の変換に問題があります。
これは、DLL を呼び出したい関数です。
C ++での私のコードはそうでした:
私はそれを機能させることができない問題。Delphi WideString や Cardinal と互換性のある型がわかりません。
誰か助けて
編集:
これは、DLL を呼び出したい関数です。
コードを変更すると、次のようになります。