美文网首页
[C++]stringstream的用法

[C++]stringstream的用法

作者: 周瑞不是同端 | 来源:发表于2020-10-07 20:17 被阅读0次

    背景

    在实现一个从文件种读取多行int型数据过程中,发现C++的标准输入cin读出的值为字符串,无法直接以int类型使用,网上搜索后发现利用stringstream实现string到int的转换较为简洁。

    stringstream

    stringstream是一种内存字符串的IO流。《C++primer》中提到3种IO操作,标准输入输出(iostream)、文件输入输出(fstream)和字符串输入输出(sstream)。sstream中包括了istringstream和ostringstream分别用于字符串的输入和输出,它的使用方法与iostream一致。

    实例

    《算法第四版》并查集的例子中给出的输入文件txt的格式为:第一行给出总的节点个数,之后每行给出需要关联的两个节点。

    tinyUF.txt
    10
    4 3
    3 8
    6 5
    ...

    C++实现的代码

    int main(int argc, char const *argv[])
    {
        string filename(argv[1]), line;
        fstream fin(filename);
        int cnt, p, q;
    
        if(getline(fin, line)) // getline返回fin,可直接判断IO的状态
        {
            istringstream iss(line);
            iss>>cnt; // istringstream可以直接把string流转成int类型
        }
        UF uf(cnt);
    
        while(getline(fin, line))
        {
            istringstream iss(line); // 每次循环自动调用析构函数和构造函数
            iss>>p; // istringstream可以直接把string流转成int类型
            iss>>q;
            uf.union_node(p, q);
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:[C++]stringstream的用法

          本文链接:https://www.haomeiwen.com/subject/vokqpktx.html