gpt4 book ai didi

C++ cin 读取 STDIN

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:57 25 4
gpt4 key购买 nike

如何用C++获取所有的STDIN并解析?

比如我的输入是

2
1 4
3
5 6 7

我想使用 C++ 使用 cin 读取 STDIN 并将每一行存储在一个数组中。因此,它将是一个 vector/整数数组。

谢谢!

最佳答案

因为这没有被标记为家庭作业,这里有一个阅读 stdin 的小例子使用 std::vector s 和 std::stringstream秒。我在末尾添加了一个额外的部分,用于遍历 vector s 并打印出值。给控制台一个 EOF (ctrl + d for *nix,ctrl + z for Windows)阻止它读取输入。

#include <iostream>
#include <vector>
#include <sstream>

int main(void)
{
std::vector< std::vector<int> > vecLines;

// read in every line of stdin
std::string line;
while ( getline(std::cin, line) )
{
int num;
std::vector<int> ints;
std::istringstream ss(line); // create a stringstream from the string

// extract all the numbers from that line
while (ss >> num)
ints.push_back(num);

// add the vector of ints to the vector of vectors
vecLines.push_back(ints);
}

std::cout << "\nValues:" << std::endl;
// print the vectors - iterate through the vector of vectors
for ( std::vector< std::vector<int> >::iterator it_vecs = vecLines.begin();
it_vecs != vecLines.end(); ++it_vecs )
{
// iterate through the vector of ints and print the ints
for ( std::vector<int>::iterator it_ints = (*it_vecs).begin();
it_ints < (*it_vecs).end(); ++it_ints )
{
std::cout << *it_ints << " ";
}

std::cout << std::endl; // new line after each vector has been printed
}

return 0;
}

输入/输出:

2
1 4
3
5 6 7

Values:
2
1 4
3
5 6 7

编辑向代码添加了更多注释。另请注意,一个空的 vectorint可以将 s 添加到 vecLines (来自空输入行),这是有意为之的,以便输出与输入相同。

关于C++ cin 读取 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com