将列表作为输入,直到按下enter键
Taking lists as input till enter is pressed
我有一个整数N,接下来的N行包含列表,可以有不同的元素从1-100。但我没有提供每个列表的长度。如何处理这种类型的输入
如果我有vector> mylist;
我需要用那些以下一行分隔的列表填充这个列表。
如果N=3
1 2 3
4
5 6
然后mylist [0] = [1, 2, 3], mylist [1] = [4], mylist[2] =[5, 6]。
如何在c++中实现?
Mycode: Not correct but i tried.
int main(){
int t;
cin>>t;
cin.ignore();
while(t--){
int n;
cin>>n;
cin.ignore();
lists_t lists;
std::string record;
while ( std::getline( std::cin, record ) &&
record.find_first_not_of( ' ' ) != std::string::npos && lists.size()!=n)
{
std::istringstream is( record );
lists.push_back( std::vector<int>( std::istream_iterator<int>( is ),
std::istream_iterator<int>() ) );
}
for ( const auto &l : lists )
{
for ( int x : l ) std::cout << x << ' ';
std::cout << std::endl;
}
}
}
问题是,如果我输入t=1和n=3,那么它需要4行,然后显示数据,而不是跟随n行。为什么?
您可以使用标准函数std::getline
和字符串流std::stringstream
,当然还有容器std::list
本身。
下面是一个例子
#include <iostream>
#include <iterator>
#include <list>
#include <sstream>
#include <string>
int main()
{
std::list<std::list<int>> lst;
std::string record;
while ( std::getline( std::cin, record ) &&
record.find_first_not_of( ' ' ) != std::string::npos )
{
std::istringstream is( record );
lst.push_back( std::list<int>( std::istream_iterator<int>( is ),
std::istream_iterator<int>() ) );
}
for ( const auto &l : lst )
{
for ( int x : l ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
输出为
1 2 3
4
5 6
如果输入是相同的行。
如果您需要输入给定的行数,那么代码可能如下所示
#include <iostream>
#include <iterator>
#include <list>
#include <sstream>
#include <string>
int main()
{
std::list<std::list<int>> lst;
std::string record;
size_t n;
std::cin >> n;
std::cin.ignore();
while ( n-- &&
std::getline( std::cin, record ) &&
record.find_first_not_of( ' ' ) != std::string::npos )
{
std::istringstream is( record );
lst.push_back( std::list<int>( std::istream_iterator<int>( is ),
std::istream_iterator<int>() ) );
}
for ( const auto &l : lst )
{
for ( int x : l ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
输入可以是
3
1 2 3
4
5 6
相关文章:
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 没有为自己的结构调用列表推回方法
- 使用简单类型列表实现的指数编译时间.为什么
- 一对向量构造函数:初始值设定项列表与显式构造
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 通过for循环使用用户输入填充列表
- C++:如何使函数只返回作为列表一部分的字符串
- 概念中的cv限定符需要表达式参数列表
- 下面是我为检测链接列表中的循环而制作的代码
- 建议在运行时将带有类实例的列表从c++导入qml
- 如何维护资源管理器项目视图中当前可见的项目列表
- 在卡萨布兰卡形成编码参数的列表
- 将列表作为输入,直到按下enter键