問題タブ [boost-tokenizer]

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.

0 投票する
2 に答える
4067 参照

c++ - 語彙キャストを後押し小切手

これは簡単なはずです。csvをトラバースし、コンマに基づいてトークン化し、トークンを使用して処理を行う関数があります。これらの1つは、intに変換することです。残念ながら、最初のトークンは必ずしもintであるとは限らないため、そうでない場合は「5」に設定したいと思います。

現在:

0 投票する
1 に答える
855 参照

c++ - 引用符と括弧のBoost.Tokenizer

を使用して文字列をトークンに分割したいと思いBoost.Tokenizeます。引用符または括弧内のテキストは、単一のトークン全体である必要があります。具体的には、次のように行を分割する必要があります

のようなトークンに

または多分

テキストを引用符でトークン化する方法は知っていますが、同時にテキストを括弧でトークン化する方法がわかりません。多分実装する必要がありますTokenizerFunction
私が説明したように文字列を分割する方法は?

0 投票する
1 に答える
594 参照

c++ - C ++算術単語数変換、アドバイスが必要です

Joachimに感謝しますが、コンパイルできません。設定方法に問題があるのではないかと思うので、あなたが言ったようにforループを削除し、関数をcalculator.cppファイルに組み込みました。そのため、プログラムをコンパイルすると、次のエラーが発生します。

エラー: `ParseNumberWord' が宣言されていません (最初にこの関数を使用してください)

電卓.h

電卓.cpp

main.cpp

0 投票する
1 に答える
1925 参照

c++ - C++イテレータループとインデックスループ

これは非常にばかげた質問だと思いますが、これを明確にしたいと思いました。

1つの文字列ベクトルが次のようになっているとしましょう。

非常に簡単です。しかし、イテレータを使用して同等の結果を出力したい場合はどうすればよいですか?たとえば、

もちろん、vnTemp.end()-1ポインタなのでエラーになります。

この場合のforループに相当するものは何ですか?両方がoptimized(-o)モードでコンパイルされた場合、パフォーマンスに違いはありますか?


編集:

これが実際にで機能することに気づきましたvectorboost::tokenizer 私がコードを使用していたときに発生した問題は次のとおりです。

tokens.end()-1これは元のコードであり、forループで言おうとするとエラーが発生します。

この問題を解決する方法はありますか?あいまいさについて申し訳ありません。

0 投票する
2 に答える
251 参照

c++ - ブースト トークナイザのランダムな動作

ブーストトークナイザーに問題があります。これが私のコードです:

このコードは常に一貫して動作するわけではありません。機能する場合もあれば、複数回実行すると機能しない場合もあります。ここで機能しない場合、次の出力が得られます。

私は何を間違っていますか?

ありがとう。

0 投票する
2 に答える
391 参照

c++ - Switch ケース内の文字列のトークン化

区切り文字に基づいて (Boost Tokenizer を使用して) 文字列をトークン化し、状態変数の値に基づいてトークンを処理します。

私が抱えている問題: ケースの 1 つは、文字列をさらにトークン化する必要があります。ケース内で tok1 および token イテレーター変数が宣言されているため、これによりエラーが発生します。スイッチの外側で宣言して、ケースの内側に割り当てるだけで試しましたが、うまくいきません。

これを機能させる方法を知っている人はいますか、またはケース内の文字列をさらにトークン化するより良い方法があるかどうかを知っていますか? ありがとう!

以下のコード例:

0 投票する
2 に答える
2085 参照

c++ - boost::iterator_range で boost::tokenizer を使用する

私はboost::tokenizerCSVのようなファイルを読むために使用しています。トークンを に保存していstd::vectorます。うまく機能しますが、boost::iteratorトークンごとに のみを保存したいです。

私は試した:

しかし、コンパイルに失敗します:

/usr/include/boost/token_functions.hpp: 'bool boost::escaped_list_separator::operator()(InputIterator&, InputIterator, Token&) のインスタンス化 [with InputIterator = __gnu_cxx::__normal_iterator >; Token = boost::iterator_range<__gnu_cxx::__normal_iterator > >; 文字 = 文字; Traits = std::char_traits]': /usr/include/boost/token_iterator.hpp:70:11: 'void boost::token_iterator::initialize() から必要 [with TokenizerFunc = boost::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >]' /usr/include/boost/token_iterator.hpp:77:63: 'boost::token_iterator::token_iterator(TokenizerFunc, Iterator, Iterator) から必要 [with TokenizerFunc =ブースト::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >]' /usr/include/boost/tokenizer.hpp:86:53: 'boost::tokenizer::iter boost::tokenizer::begin() const から必要[with TokenizerFunc = boost::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >; boost::tokenizer::iter = boost::token_iterator, __gnu_cxx::__normal_iterator >, boost::iterator_range<__gnu_cxx::__normal_iterator > > >]' /home/wichtounet/dev/gooda-to-afdo-converter/src/ gooda_reader.cpp:58:37: ここから必要 /usr/include/boost/token_functions.hpp:187:16: エラー: 'tok += (& next) の 'operator+=' に一致しません->__gnu_cxx::__normal_iterator <_Iterator, _Container>::operator* >()' /usr/include/boost/token_functions.hpp:193:11: エラー: 'tok += (& next)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* >()' /usr/include/boost/token_functions.hpp: の 'operator+=' に一致しません: インスタンス化中'void boost::escaped_list_separator::do_escape(iterator&, iterator, Token&) の [with iterator = __gnu_cxx::__normal_iterator >; Token = boost::iterator_range<__gnu_cxx::__normal_iterator > >; 文字 = 文字; Traits = std::char_traits]': /usr/include/boost/token_functions.hpp:176:11: required from 'bool boost::escaped_list_separator::operator()(InputIterator&, InputIterator, Token&) [with InputIterator = __gnu_cxx: :__normal_iterator >; Token = boost::iterator_range<__gnu_cxx::__normal_iterator > >; 文字 = 文字; Traits = std::char_traits]' /usr/include/boost/token_iterator.hpp:70:11: 'void boost::token_iterator::initialize() から必要 [with TokenizerFunc = boost::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >]' /usr/include/boost/token_iterator.hpp:77:63: 'boost::token_iterator::token_iterator(TokenizerFunc, Iterator, Iterator) から必要 [with TokenizerFunc =ブースト::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >]' /usr/include/boost/tokenizer.hpp:86:53: 'boost::tokenizer::iter boost::tokenizer::begin() const から必要[with TokenizerFunc = boost::escaped_list_separator; イテレータ = __gnu_cxx::__normal_iterator >; Type = boost::iterator_range<__gnu_cxx::__normal_iterator > >; ブースト::トークナイザー::

また、 を使用して 2 つの反復子を自分で計算しようとしましたboost::token_iteratorが、これまでのところ成功していません。

一部のパフォーマンスを節約するために、文字列ではなく各トークンのイテレータ範囲のみを取得するソリューションはありますか?

0 投票する
1 に答える
674 参照

c++ - Boost :: Tokenizerから重複を削除しますか?

カンマ区切りの文字列を分割してから、各トークンに対して何らかのアクションを実行しようとしていますが、重複を無視しているので、sthです。次の線に沿って:

boost :: tokenizerでこれを行う方法はありますか?

boost::splitとstd::uniqueを使用してこの問題を解決できることは知っていますが、トークナイザーでもこれを実現する方法があるかどうか疑問に思っていました。

0 投票する
3 に答える
4686 参照

c++ - バックスラッシュ (\) 区切り文字で入力ファイルを読み取る c++

私の入力ファイルは次のようなものです:

ツリーを作成していますが、入力ファイルから\区切り記号で読み取るときに、ディレクトリの名前を抽象化する必要があります。上記の例のように、c:、users、DeadCoder、Appdata ... を個別に抽象化する必要があります。すべての人が質問を理解していることを願っています。次に、取得したオプションを見てみましょう。

1- istringstreamでは完全に正常に機能しますwhitespaceが、では機能しません\

2- strtok()チャーで動作します。したがって、文字列を char に変更する必要がありますが、これは本当にしたくありません。

3- Boost Tokenizer()これは興味深いようで、少し前にグーグルで検索したことを除いて、過去に精通していません。コードをコピーしたところ、次のようになりました。

"error: boost/foreach.hpp: No such file or directory" これにより、誰かがここで私を助けることができるというエラーが発生し ます。better wayそして、で入力ファイルを読み取る他に何かありますか\ delimiterclass tokenizer()私はまだ c++ を学んでいるので、コードを大量に使用しないでください。

編集:ブーストライブラリがインストールされていなかったため、このエラーが発生していました。tokenize誰かが3 番目のライブラリをインストールせずにストリングを作成するためのより良い方法を説明できれば、非常に助かります。

一番; デッドコーダー。