質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

644閲覧

C++で " " "," "." ":" で string を split したい。

ruei

総合スコア284

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2021/06/30 10:55

C++で " " "," "." ":" で string を split したいと思っています。

そこでまずは "," で split すべく、こちらのサイトを参考に次のようなコードを書きました。

C++

1std::vector<std::string> split(std::string str) { 2 std::vector<std::string> result; 3 4 std::regex re("(w+)(.)"); 5 std::smatch m; 6 7 while (std::regex_search(str, m, re)) { 8 result.push_back(m[1].str()); 9 str = m.suffix(); 10 } 11 12 result.push_back(str); 13 14 return result; 15} 16

しかし、
Hello! How are you?
という string を入れると、wとare you?に分けられてしまいました。

修正方法が分かる方がいらっしゃいましたらお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

正規表現使うまでもないような...

C++

1#include <string> 2 3// str を delim で切り分ける 4std::string strtok(const std::string& str, std::string::size_type& pos, const std::string& delims) { 5 std::string::size_type bpos = str.find_first_not_of(delims, pos); // pos以降、delimsに含まれない最初の文字の位置 6 if ( bpos != std::string::npos ) { 7 pos = str.find_first_of(delims, bpos); // bpos以降、delimsに含まれる最初の文字の位置 8 return str.substr(bpos, pos-bpos); 9 } 10 return std::string(); 11} 12 13// おためし 14#include <iostream> 15 16int main() { 17 std::string str = "Hello! How are you?"; 18 std::string::size_type pos = 0; 19 std::string token; 20 while ( !(token = strtok(str, pos, " ,.:")).empty() ) { 21 std::cout << '\"' << token << "\" "; 22 } 23 std::cout << std::endl; 24}

投稿2021/06/30 11:17

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

std::regex re("(\w+)(.)"); にすると、すべての単語が取り出せますが、
「" " "," "." ":" で string を split したい」という条件には合致しません。

投稿2021/06/30 11:16

編集2021/06/30 11:20
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruei

2021/06/30 11:28

すみません、こちらの意味が分かるサイトなどありましたら、教えていただけないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問