首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串流划界器

串流划界器
EN

Stack Overflow用户
提问于 2020-06-04 20:14:35
回答 1查看 3.4K关注 0票数 1

是否存在用于字符串的默认分隔符?从我的研究中,我了解到我可以用它来分割一个字符串,用空格和逗号作为分隔符。但是,我可以使用其他分隔符作为字符串吗?下面是一个C++代码片段:

代码语言:javascript
复制
vector<int> parseInts(string str) {
    // Complete this function
    stringstream ss(str);
    vector<int> res;
    char ch;
    int x;
    while(ss){
        ss >> x >> ch;
        res.push_back(x);
    }
    return res;
}

这段代码可以工作,但我没有提到任何特定的分隔符。这是怎么发生的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 22:40:53

根本没有流的“分隔符”。另一方面,operator>>通过分隔空格字符来实现它的读取。对于其他分隔符字符,可以使用std::getline()代替,例如:

代码语言:javascript
复制
vector<int> parseInts(string str) {
    // Complete this function
    istringstream iss(str);
    vector<int> res;
    int x;
    string temp;
    char delim = '-'; // whatever you want
    while (getline(iss, temp, delim)) {
        if (istringstream(temp) >> x) { // or std::stoi(), std::strtol(), etc
            res.push_back(x);
        }
    }
    return res;
}

这段代码工作时没有提到任何特定的分隔符。这是怎么发生的?

流不知道任何关于分隔符的信息。正在发生的是,在每个循环迭代中,您调用ss >> x读取下一个可用的非空格子字符串并将其转换为整数,然后调用ss >> ch读取该整数后面的下一个可用的非空格字符。代码并不关心这个字符实际上是什么,只要它不是空格。循环一直运行到流的末尾,或者遇到读取/转换错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62203379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档