タグ付けされた質問 「string」

文字列はシンボルの有限シーケンスであり、通常はテキストに使用されますが、任意のデータに使用されることもあります。


14
ASP.NETで文字列からHTMLタグを削除するにはどうすればよいですか?
ASP.NETを使用して、指定された文字列からHTMLタグを確実に削除するにはどうすればよいですか(つまり、正規表現を使用しません)。PHPのようなものを探していstrip_tagsます。 例: <ul><li>Hello</li></ul> 出力: "こんにちは" 私は車輪を再発明しないように努めていますが、今のところ自分のニーズを満たすものを見つけていません。
123 c#  asp.net  html  regex  string 


30
C ++列挙型を文字列に変換する簡単な方法はありますか?
名前付き列挙型があるとします。 enum MyEnum { FOO, BAR = 0x50 }; 私がググったのは、プロジェクトのすべてのヘッダーをスキャンし、列挙ごとに1つの関数を含むヘッダーを生成するスクリプト(任意の言語)です。 char* enum_to_string(MyEnum t); そして、このようなものの実装: char* enum_to_string(MyEnum t){ switch(t){ case FOO: return "FOO"; case BAR: return "BAR"; default: return "INVALID ENUM"; } } 落とし穴は本当にtypedefされた列挙型と名前のないCスタイルの列挙型です。誰かがこれについて何か知っていますか? 編集:ソリューションは、生成された関数を除いて、ソースを変更しないでください。列挙型はAPI内にあるため、これまでに提案されたソリューションを使用することはオプションではありません。
123 c++  string  enums  scripting 

13
C ++パフォーマンスの課題:整数からstd :: stringへの変換
以下にリンクされているstd :: stringコードに整数のパフォーマンスを超える人はいますか? そこに整数に変換する方法について説明し、いくつかの質問に既にあるstd::stringようなC ++で、この1は、しかし、提供するソリューションのどれも効率的ではありません。 これは、いくつかの一般的なメソッドと競合するためのコンパイル可能なコードです。 stringstreamを使用した「C ++の方法」:http : //ideone.com/jh3Sa sprintf。SO-ersは通常、パフォーマンスを重視する場合に推奨します。http://ideone.com/82kwR 一般的な考えに反しboost::lexical_castて、独自の実装(ホワイトペーパー)がありstringstream、数値挿入演算子を使用しません。この他の質問は悲惨であると示唆しているので、私は本当にそのパフォーマンスを比較してみたいと思います。 そして、デスクトップコンピューターで競争力のある私自身の貢献は、整数モジュロに依存するアルゴリズムとは異なり、組み込みシステムでもフルスピードで実行されるアプローチを示しています。 ベンのアルゴリズム:http : //ideone.com/SsEUW そのコードを使用したい場合は、簡略化されたBSDライセンスの下で使用できるようにします(商用利用が許可され、帰属が必要です)。聞いてください。 最後に、この関数ltoaは非標準ですが広く利用できます。 ltoaバージョン、それを提供するコンパイラを持っている人(ideoneは提供していません):http ://ideone.com/T5Wim パフォーマンス測定値を回答としてすぐに投稿します。 アルゴリズムのルール 少なくとも32ビットの符号付きおよび符号なし整数を10進数に変換するためのコードを提供します。 出力をとして生成しstd::stringます。 スレッド化およびシグナルと互換性のないトリック(たとえば、静的バッファー)はありません。 ASCII文字セットを想定できます。 INT_MIN絶対値を表現できない2の補数マシンでコードをテストしてください。 理想的には、出力はstringstream、http://ideone.com/jh3Saを使用した正規のC ++バージョンと文字ごとに同一である必要がありますが、正しい数値でも問題ないため、明確に理解できるものであれば何でもかまいません。 NEW:比較に必要なすべてのコンパイラーオプションとオプティマイザーオプション(完全に無効化されている場合を除く)を使用できますが、コードは少なくともVC ++ 2010およびg ++でもコンパイルして正しい結果を与える必要があります。 期待される議論 より優れたアルゴリズムに加えて、いくつかの異なるプラットフォームとコンパイラでいくつかのベンチマークを取得したいと思います(標準の測定単位としてMB /秒のスループットを使用しましょう)。私のアルゴリズムのコード(sprintfベンチマークはいくつかのショートカットを使用していることを知っています-現在は修正されています)は、少なくともASCIIの仮定の下で、標準によって明確に定義された動作ですが、出力に対して未定義の動作または入力がある場合無効です。指摘してください。 結論: おそらくそれぞれの実装が異なるため、g ++とVC2010では異なるアルゴリズムが実行さstd::stringれます。VC2010は明らかにNRVOでより良い仕事をしており、戻り値を取り除くことはgccでのみ助けられました。 sprintf桁違いに優れたコードが見つかりました。 ostringstream50倍以上遅れます。 チャレンジの勝者は、gccで自分の速度の350%を実行するコードを生成するuser434507です。SOコミュニティの気まぐれのため​​、以降のエントリはクローズされます。 現在の(最終?)スピードチャンピオンは次のとおりです。 gccの場合:user434507、8倍高速sprintf:http ://ideone.com/0uhhX Visual C ++の場合:Timo、15倍高速sprintf:http : //ideone.com/VpKO3

5
パスからディレクトリを抽出
私のスクリプトでは、作業しているファイルのディレクトリが必要です。たとえば、file = "stuff / backup / file.zip"です。変数から文字列「stuff / backup /」を取得する方法が必要です$file。
123 string  bash  path 

24
文字列内の部分文字列の出現
次のアルゴリズムが停止しないのはなぜですか?(strは検索している文字列、findStrは検索しようとしている文字列です) String str = "helloslkhellodjladfjhello"; String findStr = "hello"; int lastIndex = 0; int count = 0; while (lastIndex != -1) { lastIndex = str.indexOf(findStr,lastIndex); if( lastIndex != -1) count++; lastIndex += findStr.length(); } System.out.println(count);
122 java  string 


13
Swiftで文字列から最初の文字を削除する最も簡単な方法は何ですか?
文字列から最初の文字を削除したい。これまでのところ、私が思いついた最も簡潔なことは: display.text = display.text!.substringFromIndex(advance(display.text!.startIndex, 1)) IntUnicodeのために文字列にインデックスを付けることができないことはわかっていますが、このソリューションは非常に冗長に見えます。私が見落としている別の方法はありますか?
122 string  swift 

2
#include <string>がスタックオーバーフローエラーを防ぐのはなぜですか?
これは私のサンプルコードです: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyClass { string figName; public: MyClass(const string&amp; s) { figName = s; } const string&amp; getName() const { return figName; } }; ostream&amp; operator&lt;&lt;(ostream&amp; ausgabe, const MyClass&amp; f) { ausgabe &lt;&lt; f.getName(); return ausgabe; } int main() { MyClass f1("Hello"); cout …


6
2つの文字列リテラルを連結する
KoenigによるAccelerated C ++を読んでいます。彼は、「新しい考え方は、+を使用して文字列と文字列リテラルを連結できる、つまり、2つの文字列(2つの文字列リテラルではない)を連結できるということです。 結構、これは私が思うに理にかなっています。次に、これを明らかにするための2つの個別の演習に移ります。 次の定義は有効ですか? const string hello = "Hello"; const string message = hello + ",world" + "!"; 今、私は上記を実行しようとしましたが、うまくいきました!嬉しかったです。 それから私は次の練習をしようとしました。 const string exclam = "!"; const string message = "Hello" + ",world" + exclam; これは機能しませんでした。これで、2つの文字列リテラルを連結できないという事実と関係があることを理解していますが、なぜ最初の例を機能させたのか( "、world"と "!"ではない)の意味上の違いは理解できません。 "2つの文字列リテラル?これはうまくいかなかったのではないでしょうか?)しかし2つ目はうまくいきませんでした。




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.