問題タブ [c-strings]
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 文字列の処理
C で文字列を返すメソッドを作成する際に、より良い方法と見なされるものは何ですか?
バッファとサイズを渡す:
または、適切なサイズの文字列を作成して返します。
PS割り当てスタイルとネストされた関数呼び出しを許可するためにバッファptrを返すことについてどう思いますか
c++ - c-strings 配列を初期化する方法 (stl なし)
MSVC2010でC文字列の配列をゼロポインタで初期化したい
初期化を修正するにはarr_
?STLやMFCなどは使えませんでした。
c++11 - C++0x関数の削除-特定のタイプを除くすべてを削除します
C ++ 0xでは、次のようなことができます。
f()
以外のタイプで呼び出されないようにするためdouble
。
私がやろうとしていることは似ていますが、まったく同じではありません。
ポインタ配列を操作する関数があります。例えば:
Tをchar、char16_t、およびchar32_tで機能させたいのですが、他のタイプでは機能させたくありません。私はC++0xdelete
がこれを達成するための良い方法だろうと思っていました。基本的に、この関数が3つのUnicodechar
タイプのいずれでもないタイプで機能しないようにしたいのですが、それでも、タイプを一般化してコードの繰り返しを回避できる関数テンプレートの利点を活用したいと考えています。
この問題を解決するための最良の方法は何でしょうか?出来ますか?
c++ - std::string::c_str() の結果の寿命は?
私のプログラムの 1 つで、const char*
.
次のような構造があるとしましょう。
私の上位レベルのアプリケーションは のみを処理するため、ポインターを取得するためstd::string
に を使用することを考えました。std::string::c_str()
const char*
しかし、の寿命はc_str()
何ですか?
未定義の動作に直面することなく、このようなことを行うことはできますか?
または、結果をすぐc_str()
に別の場所にコピーすることになっていますか?
ありがとうございました。
c - ステートメントの意味
私は何度も声明に出くわしましたchar* ch = "hello";
。
私はそれがへのポインタであることを示していることを理解しchar* ch
ていch
ます char
。しかし、 helloをchに割り当てるとはどういう意味ですか?
私はこれを理解することはできませんか?助けてください。
c++ - ReadFile weird behavior when buffer is CString
I have inherited code using ReadFile
Windows API method to read single byte from parallel port in a loop.
The code passed CString
instance as the buffer argument, and 1 as the number of bytes to read, something like this:
It worked for long time with this code, but sometimes caused weird problems for example input sent from the machine as "AV01000" was read as "AkVk0k1k0k0k0" - somehow some random character was added after each character read.
Took me long time to figure the source of this behavior, and after changing the code to:
It worked flawlessly, reading the exact data sent by the machine.
Is this some kind of buffer overflow in the internal code of CString
? If not, what might explain this weird behavior?
c - より良いstrlen関数を書く方法は?
「WriteGreatCodeVolume 2」を読んでいますが、次のような強い影響があります。
この本は、この実装は経験の浅いCプログラマーにとって典型的なものであると述べています。私は過去11年間Cでコーディングしてきましたが、Cでこれよりも優れた関数を書く方法がわかりません(アセンブリでより良いものを書くことを考えることができます)。Cでこれよりも優れたコードを書くにはどうすればよいですか?glibcのstrlen関数の標準ライブラリ実装を調べましたが、そのほとんどを理解できませんでした。高度に最適化されたコードを書く方法に関するより良い情報はどこにありますか?
c++ - C++で文字列に特殊文字が含まれているかどうかを効果的に確認するにはどうすればよいですか?
文字列に特殊文字が含まれているかどうかを確認するより良い方法があるかどうかを調べています。私の場合、英数字と「_」以外はすべて特殊文字と見なされます。現在、std::string = "!@#$%^&" などの特殊文字を含む文字列があります。次に、std::find_first_of () アルゴリズムを使用して、文字列に特殊文字が存在するかどうかを確認します。
ホワイトリストに基づいてそれを行う方法を考えていました。小文字/大文字、数字、およびアンダースコアを文字列で指定したい (それらをリストしたくない。 [a-zA-Z0-9_] のような種類の ASCII 範囲を指定する方法はありますか? )。どうすればこれを達成できますか?次に、std::find_first_not_of() を使用する予定です。このようにして、私が実際に欲しいものに言及し、反対をチェックすることができます.
c - regexecとregcompは、自分でstrncmpを実行するよりも効率的ですか?
私はこのような文字列を持っています:
ユーザーに何が欲しいかを尋ねるプログラムを書きたいです。彼女がクラウンとして「ラリー」と「レッド」チェリーを持つべきストリングを要求した場合、私はストリングを返す必要があります。
さて、私はここで問題を単純化しすぎています。そのような文字列はたくさんある可能性があり、それらを解析して一致するものをすべて返す必要があります。
質問:regexecとregcompを実行する方が効率的ですか、それとも文字列を分解してstrncmpを実行するのですか?
PS:regexecは内部で何らかの比較を行う必要があり、それらは非常に効率的になるように設計されているようです。
c++ - char*を使用して正しいファイルパスを保存する
C / C ++をいじってからしばらく経ち、char*を操作するために使用できる関数の記憶が消えてしまいました。
現在、次のコードを使用して現在の作業ディレクトリを取得しています...
ただし、このパスを使用して、最後のディレクトリを切り取り、前のディレクトリにドロップする必要があります。現在、パスに「C:/ srcds / orangebox」のようなものが格納されており、正しいパスを取得するには、このディレクトリから最後のディレクトリを削除する必要があります。この場合、「C:/srcds」になります。
char *でこれを行うための最良の方法は何ですか?文字列の使用を提案しないでください。これは非常に簡単ですが、私が使用するSDKは、代わりにchar *を中心に展開しているため、読みやすくするためにこれを使用するようにしています。