我正在通过cin读取文件的内容,我需要解析第一行
该文件看起来像:
1 2 3 4
1->3
2->5
...
所以基本上我的第一步是将第一行读入一个int的向量 .
我的方法如下:
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);
然后我循环遍历字符串以获取单个整数并将其保存在辅助int中,然后将其推入向量 . 我尝试直接将它们放入向量中,但同样不可能(至少按照我的方式进行)
while (iss >> initial) {
}
是否有一种更简洁的方法可以从cin中获取一行直接将空格分隔的整数组成一个整数向量?
1 回答
我会从最后开始:
这很容易使用std::back_inserter工作:
坦率地说,我可能会保留原样,但如果绝对必须,可以使用std::istream_iterator直接初始化矢量: