回答

收藏

如何迭代字符串的单词?

技术问答 技术问答 123 人阅读 | 0 人回复 | 2023-09-11

我正在尝试遍历字符串的单词。
+ A2 ]+ u1 M: w& Z/ @, r5 n假设字符串由空格分隔的单词组成。
) |9 D1 Y+ {( ]  [请注意,我对 C 字符串函数或字符操作/访问不感兴趣。此外,请优先考虑优雅而不是效率。
7 C8 e0 w2 |$ I1 j, K& d5 Z0 ^我现在最好的解决办法是:
9 I) {9 X2 S# y. \
    ( g& m8 W! z/ ~- L2 P2 y! [6 b% I" E* {
  • #include #include #include using namespace std;int main(){    string s = "Somewhere down the road";    istringstream iss(s);    do                                                                                                                                                                                                                 string subs;        iss >> subs;        cout 有没有更优雅的方法来做到这一点?' U# k7 ^' }8 @- X0 [
  •                                                                ) R4 H5 E* ?  {* P9 g
  •     解决方案:                                                               6 L7 {" E/ w0 O( i, O0 `
  •                                                                 我用它来分隔字符串。第一个将结果放入预先构建的向量中,第二个返回新向量。[code]#include #include #include #include template void split(const std::string &s,char delim,Out result)    std::istringstream iss(s);    std::string item;    while (std::getline(iss,item,delim))        *result   = item;   std::vector split(const std::string &s,char delim)    std::vector elems;    split(s,delim,std::back_inserter(elems));    return elems;}
    6 }, |% o4 ^( C5 d: B( L; M, Q3 Z* d
请注意,此解决方案不会跳过空标记,因此以下将找到 4 项,其中一项为空:6 D( K, n# \9 h9 J2 |- E
[code]std::vector x = split("one:two::three",code]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则