【发布时间】:2019-05-11 06:24:49
【问题描述】:
我正在通过cin读取一个文件的内容,我需要解析第一行
文件如下:
1 2 3 4
1->3
2->5
...
所以基本上我的第一步是将第一行读入一个整数向量。
我的方法如下:
std::string line;
std::vector<int> initial;
std::getline(std::cin, line);
std::istringstream iss(line);
int aux;
while (iss >> aux) {
initial.push_back(aux);
}
这有效,我的向量initial 正确包含第一行的 4 个整数。
但是我觉得我正在做很多应该可以以更直接的方式完成的转换。
我正在将第一行读入一个字符串,然后将这个字符串转换成一个流,我尝试直接读入一个流但编译器抱怨。
std::istringstream iss();
std::getline(std::cin, iss);
然后我遍历字符串以获取单个整数并将它们保存在辅助整数中,然后再推入向量中。 我尝试直接将它们放入向量中,但又不可能(至少我这样做的方式)
while (iss >> initial) {
}
有没有一种更简洁的方法可以将由空格分隔的整数组成的 cin 中的一行直接转换为整数向量?
【问题讨论】:
-
有一个vector constructor 采用一对迭代器。你可以创建iterators from input streams。有了这些,就可以很容易地直接从流中构造或初始化向量。