用C ++将一个字符串拆分成一个数组

可能重复:
如何在C ++中分割字符串?

我有一个数据输入文件,每一行都是一个条目。 在每一行中,每个“字段”由一个空格“”隔开,所以我需要按空格分隔行。 其他语言有一个称为分裂(C#,PHP等)的功能,但我无法找到一个用于C ++。 我怎样才能做到这一点? 这是我的代码,获取行:

string line;
ifstream in(file);

while(getline(in, line)){

  // Here I would like to split each line and put them into an array

}

#include <sstream>  //for std::istringstream
#include <iterator> //for std::istream_iterator
#include <vector>   //for std::vector

while(std::getline(in, line))
{
    std::istringstream ss(line);
    std::istream_iterator<std::string> begin(ss), end;

    //putting all the tokens in the vector
    std::vector<std::string> arrayTokens(begin, end); 

    //arrayTokens is containing all the tokens - use it!
}

顺便说一句,像我这样使用限定名,如std::getlinestd::ifstream 。 看起来你已经在代码中的某处using namespace std ,这被认为是不好的做法。 所以不要那样做:

  • 为什么“使用名称空间标准”被认为是不好的做法?

  • vector<string> v;
    boost::split(v, line, ::isspace);
    

    http://www.boost.org/doc/libs/1_48_0/doc/html/string_algo/usage.html#id3115768


    我已经为我的一个模拟需求写了一个函数。 可能是你可以使用它!

    std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) 
    {
        std::stringstream ss(s+' ');
        std::string item;
        while(std::getline(ss, item, delim)) 
        {
            elems.push_back(item);
        }
        return elems;
    }
    
    链接地址: http://www.djcxy.com/p/19565.html

    上一篇: Split a string into an array in C++

    下一篇: Split string by single spaces