如何在 C++ 中与 istringstream 一起使用?

How using with istringstream in c++?

我在 C++ 中寻找拆分空格的函数。我在互联网上找到这段代码。我想知道说的是什么。

  string line;
  istringstream buf(line);
  istream_iterator<string> beg(buf), end;
  vector<string> tokens(beg, end);
  return tokens;

参见:

#include <iostream>
#include <sstream>
#include <vector>
#include <iterator>

std::vector<std::string> SplitByWhiteSpace(std::string stringToSplit)
{
    std::istringstream buf(stringToSplit);
    std::istream_iterator<std::string> beg(buf), end;
    return std::vector<std::string>(beg, end);
}

int main() {
    std::vector<std::string> tokens = SplitByWhiteSpace("Hello World!");

    for (std::size_t i = 0; i < tokens.size(); ++i)
    {
        std::cout<<tokens[i]<<"\n";
    }

    return 0;
}

该代码将字符串拆分为 white-space 和 returns 向量中的所有标记。然后您可以打印向量中的所有标记。

几乎和做的一样(结果相同,技术不同):

std::vector<std::string> SplitByWhiteSpace(std::string stringToSplit)
{
    std::string word;
    std::vector<std::string> tokens;
    std::istringstream buf(stringToSplit);

    while (buf >> word)
    {
        tokens.push_back(word);
    }

    return tokens;
}