如何在c ++中使用istringstream?

时间:2017-03-30 01:25:53

标签: c++ string stream

我寻找在c ++中拆分空格的函数。我在网上找到这个代码。我想知道说什么。

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

1 个答案:

答案 0 :(得分:0)

见:

#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;
}

该代码通过空格分割字符串并返回向量中的所有标记。然后,您可以在矢量中打印所有标记。

它几乎与做(相同的结果,不同的技术)相同:

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;
}