[C++]stringstream的用法

2020-10-07  本文已影响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;
}
上一篇下一篇

猜你喜欢

热点阅读