背景
在实现一个从文件种读取多行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;
}
网友评论