[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
2022-03-15 08:56:19
質問
文字列の単語を反復処理しようとしています。
この文字列は、空白で区切られた単語で構成されていると仮定することができる。
なお、私はC言語の文字列関数やそのような文字操作・アクセスには興味がありません。また、回答は効率よりもエレガンスを優先してください。
今、私が持っている最適解は
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string s = "Somewhere down the road";
istringstream iss(s);
do
{
string subs;
iss >> subs;
cout << "Substring: " << subs << endl;
} while (iss);
}
もっとエレガントな方法はないのでしょうか?
どのように解決するのですか?
参考までに、標準ライブラリの機能だけを利用して入力文字列からトークンを抽出する別の方法を紹介しよう。これは、STLの設計の背後にあるパワーとエレガンスの一例である。
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
int main() {
using namespace std;
string sentence = "And I feel fine...";
istringstream iss(sentence);
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
ostream_iterator<string>(cout, "\n"));
}
抽出されたトークンを出力ストリームにコピーする代わりに、同じ汎用的な
copy
というアルゴリズムがあります。
vector<string> tokens;
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter(tokens));
... あるいは
vector
を直接指定します。
vector<string> tokens{istream_iterator<string>{iss},
istream_iterator<string>{}};
関連
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] PHPのexplode()関数に相当するものはC++にあるのでしょうか?[重複]。
-
[解決済み] C++ std::string を ";" などのトークンを使って分割する [重複] [重複
-
[解決済み] カンマで区切られた文字列をstringstreamで区切る方法【重複あり
-
[解決済み] カンマ区切りの std::string をパースする [重複] 。