在C++中将字符串拆分为数组

Aho*_*tbi 13 c++ string tokenize

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

我有一个数据输入文件,每行都是一个条目.在每一行中,每个"字段"由一个空格""分隔,所以我需要按空格分割线条.其他语言有一个叫做split(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

}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 22

#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!
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用合格的,名称,如std::getline,std::ifstream像我一样.看来你已经using namespace std在代码中写了一些被认为是不好的做法.所以不要这样做:

  • @Nawaz谢谢,看看我的其他问题,我正在使用的语法以及我从大学教师那里学习C++的方式非常值得怀疑:S !!!!! (2认同)

Vij*_*jay 5

我已经为我的类似需求编写了一个函数,也许你可以使用它!

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;
}
Run Code Online (Sandbox Code Playgroud)