問題タブ [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.
java - Linux で wstring を jstring に変換する
Linuxでのwchar_tのサイズが4バイトであるため、UNIXでwstringをjstringに変換する際に問題があります(Windowsのように2バイトではないため、wchar_tをjcharにキャストすることはできません)。
誰でもそれを手伝ってもらえますか?
ありがとう、レザ
delphi - Delphi DLLがShareMemを使用せずにWideStringを使用できるのはなぜですか?
別の質問に対するDavidの回答は、DelphiDLL関数がWideStringを返すことを示しています。を使わずにそれが可能だとは思ってもみませんでしたShareMem
。
私のテストDLL:
私の発信者プログラム:
それは動作します、そして私は方法がわかりません。私が知っている規則は、Windows APIで使用される規則です(例:Windows:)GetClassNameW
。
呼び出し元がバッファと最大長を提供することを意味します。Windows DLLは、長さの制限付きでそのバッファに書き込みます。呼び出し元は、メモリの割り当てと割り当て解除を行います。
もう1つのオプションは、DLLがたとえばを使用してメモリをLocalAlloc
割り当て、呼び出し元がを呼び出してメモリの割り当てを解除することLocalFree
です。
DLLの例では、メモリの割り当てと割り当て解除はどのように機能しますか?WideString
結果が( )であるため、「魔法」は起こりBSTR
ますか?そして、なぜWindows APIはそのような便利な規則で宣言されないのですか?(そのような規則を使用する既知のWin32 APIはありますか?)
編集:
DLLをC#でテストしました。
呼び出すSomeFunction1
とAV(Attempted to read or write protected memory
)が発生します。
SomeFunction2
正常に動作します。
これがフォローアップです。
string - 定義: AnsiString、WideString、String、char[]、char*、BSTR、
AnsiString
クラスもですか?そしてstring
?クラスですか?そしてchar[]
?
WideString
aは 2 バイト文字AnsiString
のラッパーであり、1 バイト文字のラッパーであり、1 バイト文字char[]
の配列であると言えますか? string
それが何であるかよくわかりません...
Code Builder C++ 2007 で利用可能なさまざまな種類の文字列型とその移植性についてはわかりません。
delphi - インデックスで WideString の文字にアクセスするには?
コンパイルできない次のコード スニピットがあります。
Delphi 5は文句を言いIncompatible types
ます。
私はそれを次のように単純化しようとしました:
動作し、次のとおりです。
そうではありません。
WideString[index]
を返さないとしか思えませんWideChar
。
私は物事を強制しようとしましたWideChars
:
しかし、それも失敗します:
互換性のないタイプ
脚注
5
:デルファイ5
string - c#:c#文字列をc++wstringに変換する方法とその逆の方法
c#コード-
sをwstringとしてc++dllに送信したい
..c#で文字列をwstringに変換する方法は?
c - C++でwidestringを使用するとすぐにプログラムがクラッシュします
(私はまだ自分の質問に答えるのに十分な評判がないので、最初にここに置きます。投稿したときはまっすぐに考えていませんでした。私にとっては午前3時でしたが、私には思い浮かびませんでした。他の場所で問題を探してください。
表示する独自のメッセージを持つオブジェクトをluaに動的に追加する別の関数を作成していました。そして、それが私に問題を与えるものなので、静的にロードすると問題ありません。これは確かにコードの別の部分の問題でした。)
私はここでかなり奇妙な問題を抱えています
私のC++コードはlua(ブーストライブラリなし)で動作しているので、luaから変数などを取得でき、luaは登録済みのC関数を呼び出すことができます。
これで、関数の2つのバージョンがあります。1つはANSI用で、もう1つはUnicode(中国語)用です。ANSIバージョンは正常に動作しているようで、壊れることはありません。問題はUnicodeバージョンにあります。
ユニコードをANSI形式で解読できたので、それで問題ありません。問題は、それが数回正常に動作することですが、同じluaコードを複数回繰り返すと、プログラムがクラッシュします。それがluaスタックの問題なのか、単にメモリの問題なのかはまだわかりません。
これが最初にコードを与えるコードです、これは私がそれを絞り込んだものです
したがって、printfとテストを何時間も行った後、wstring msg = wstring(txt)がそれを壊す行であることがわかりました。
少なくともここではクラッシュしないwidestringstreamを使用して回避しました(ただし、widestringstreamを使用するには、他の関数を修正する必要がありますが、おそらく)
しかし、wstring msg = buf.str()// bufがストリームであるような行を追加するとすぐに、同じ問題が発生します。
だから私は疑問に思っています、それが起こっている理由は何でしょうか?Code :: Blocksでデバッグモードをオンにすると正常に動作しますが、明らかにそれは良い解決策ではありません。私はWindowsを使用しているので、Valgrindも使用できません。
前もって感謝します
outputstream - int を std::wcerr に出力するには?
operator<<
オブジェクトが astd::wstring
や int などを出力する必要がある場合、出力をどのように記述すればよいですか?
言い換えれint
ば、渡された場合、 s やその他のプリミティブデータ型を出力するにはどうすればよいwcerr
ですか? 私は必要ですboost::lexical_cast<std::wstring>
か、それとも似ていますか?
winapi - C++ Builder XE2: 文字列を wchar_t* に変換する方法
SHBrowseForFolder をポップアップして正常に動作させていますが、タイトルを設定したいと思います。wchar_t* でなければならないことはわかっていますが、(wchar_t*)L"My Title" のような const を使用すると、タイトルが正しく表示されます。
しかし、文字列値を使用しようとすると、最初の文字「M」しか得られません。これは、ワイド文字列が新しいワイド文字列に再度変換され、各文字がヌルで埋められたようなものです。
UnicodeStringのドキュメントには、すべての変換関数c_str()
がt_str()
あり、w_str()
すべてが a を返しますwchar_t*
が、宣言にはWideChar*
.
このコードを文字列と連携させる方法はありますか?
delphi - WideReplace関数をテストするにはどうすればよいですか?
OS:ハンガリー語のWindows(Windows 1250)
Delphi6Profの下にはありませんWideStringPos, WideStringCopy, WideStringReplace
...
しかし、XMLベースのプロジェクトでは、それらを使用する必要があります。
そのため、これらの関数の「ようなもの」を書き込もうとしました。
しかし、私は彼らが私が望むように働いているかどうかはわかりません...
DelphiはWideをAnsiに変換し、バックグラウンドで逆にするため、コードがこれらの副作用から安全であるかどうかはわかりません... :-)
コードは非常に原始的です-私はすぐに解決策が必要です...
私はそれについて2つの質問があります:
確かに悪い結果をもたらす(WideをAnsiにサイレントに変換し、文字を失う原因となる)コードがありますか?
このコードをテストできるキャラクターを知っていますか?
たとえば、chr(XXX)コンバーターがワイドルールを保持しているときに残っているものですが、間違ったコードを作成すると失われます...
あなたが書くすべての情報をありがとう...