問題タブ [stdstring]
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++ でコンパイルしようとしています。
「ここでエラーが発生しました」と書かれているところに、コンパイル中に次のエラーが表示されます。
c++ - std :: basic_stringを利用して、長さ制限のある文字列を実装できますか?
char*
文字列とその長さをそれぞれ表すためにと数値を受け入れる低レベルのAPIを使用しています。私のコードはstd::basic_string
、適切な変換を使用してこれらのメソッドを使用および呼び出します。残念ながら、これらのメソッドの多くはさまざまなサイズの文字列の長さ(つまり、max(unsigned char
)、max(short
)など)を受け入れ、文字列インスタンスが低レベルのAPI。
デフォルトでは、std::basic_string
インスタンスの最大長は(max()またはmax())の最大値によって制限さsize_t
れunsigned int
ます__int64
。実装の特性とアロケータ実装を操作してstd::basic_string
、代わりに使用する独自のタイプを指定できるようにする方法はありますsize_t
か?そうすることで、実装内の既存の境界チェックを活用したいと考えているstd::basic_string
ので、変換を実行するときにそうする必要はありません。
私の最初の調査では、これは私自身の文字列クラスを書かなければ不可能であることが示唆されていますが、私は何かを見落としていることを望んでいます:)
c++ - std :: string :: max_size()== std :: string :: allocator :: max_size()ではないのはなぜですか
最近、次のステートメントが当てはまらないことに気づきましたstd::string s
。
std::string
これは興味深いと思います。デフォルトstd::allocator<char>
では、理論上の制限がありsize_type(-1)
ます(2の補数を想定していることはわかっていますが、実際の質問とは関係ありません)。実際の制限はこれよりも大幅に少なくなることを私は知っています。一般的な32ビットのx86システムでは、カーネルはアドレス空間の2GB(おそらく1GB)を占有し、実際の上限ははるかに小さくなります。
とにかく、GNU libstdc ++std::basic_string<>::max_size()
は、使用しているアロケータが何を言っているかに関係なく、同じ値を返すように見えます(のようなもの1073741820
)。
それで、疑問は残ります、なぜstd::basic_string<>::max_size()
ただ戻ってこないのget_allocator().max_size()
ですか?これが架空の上限であるように私には思えます。そして、割り当てが不足している場合は、をスローするだけなstd::bad_alloc
ので、試してみませんか?
これは何よりも好奇心が強いのですが、少なくともこの1つの実装で2つが別々に定義されているのはなぜだろうと思っていました。
c++ - std::istreamからstd::stringに直接読み取る
一時バッファを作成せずに、既知のバイト数を直接std :: stringに読み込む方法はありますか?
たとえば、現在私はそれを行うことができます
c++ - LPTSTRに相当する文字列はありますか?
LPTSTRに相当する文字列はありますか?私は文字列とwstringを知っています。tstringはありますか?
c++ - std :: stringはどのように代入演算子をオーバーロードしますか?
だから質問は
正しいmystring&opeartor =オーバーロードを作成する方法、つまり、ポインターではなく参照を返すにはどうすればよいですか(C ++で参照とポインターの間を転送できますか?)
正しいmystringoperator=overloadを作成する方法?ソースコードは正常に機能すると思いましたが、operator =をオーバーロードしなかったかのように、mystringにconstchar[]を割り当てることができませんでした。
ありがとう。
c++ - 「&s [0]」は、std :: string内の連続する文字を指しますか?
私はいくつかのメンテナンス作業を行っていて、次のようなものに遭遇しました:
&s[0]を使用するのがstd:: vectorの場合は安全だと思いますが、これはstd :: stringの安全な使用ですか?
c++ - How do I convert a "pointer to const TCHAR" to a "std::string"?
I have a class which returns a typed pointer to a "const TCHAR". I need to convert it to a std::string but I have not found a way to make this happen.
Can anyone provide some insight on how to convert it?
c++ - std::string-最初から最後までデータを取得します
2つのインデックス間でデータを取得したい。たとえば、「ただテストしています...」という文字列があり、2から6までの文字列が必要です。「sttes」を取得する必要があります。
これはどの機能で実行できますか?
c++ - 長さがコンパイラにわかっているのに、文字列の割り当てが最適化されないのはなぜですか?
今日、いくつかのタイミングコードで遊んでいたところ、文字列リテラルをstd :: stringに割り当てると、約10%高速であることがわかりました(12文字の短い文字列の場合、大きな文字列の場合はさらに大きな違いがあります)。 (sizeof演算子を使用して)既知の長さのリテラルを使用します。(VC9コンパイラでのみテストされているので、他のコンパイラの方がうまくいくと思います)。
さて、私が疑う理由は、文字列の長さを取得するためにstrlenを呼び出さなければならないためです(VC9は私の強みではないため、100%確実ではありません)。その後、2番目の場合と同じようにします。
std :: stringが存在していた期間と、最初のケースが実際のプログラムでどれほど一般的であるか(特に、+、=、+ =などの演算子と同等のメソッドを含める場合)を考えると、どうして最初のケースが最適化されないのでしょうか。 2番目に?std :: basic_stringオブジェクトであり、リテラルであるかどうかを言うのも非常に単純なようです。bのように記述されているかのようにコンパイルしますか?