繁体   English   中英

如何在 C++ 中输入并将其“拆分”为列表? 换句话说,取 N 个输入并放入一个长度为 N 的数组中

[英]How do I take an input in C++ and “split” it into a list? In other words, take N inputs and put in into an array of N length

我正在尝试通过执行一些 Google Kick Start 来改进我的 C++ 但我无法开始我的程序,因为我无法获得 N 个输入。 我来自 python,使用 input().split() 非常容易,但我不知道如何在 C++ 中执行此操作。 我尝试用谷歌搜索找到答案,但我无法正确地将我的问题说出我找到答案的地方。 这是我当前的代码:

#include <iostream>

int main() {
    int t = 0;
    std::cin >> t;
    for (int i = 0; i < t; i++) {
        int n = 0, int k = 0;
        int a[1000];
        std::cin >> n >> k;
        std::cin >> a;
    }
}

,其中 T 是测试用例的数量,N 是列表中的项目数,K 是用于计算竞赛答案的参数,A 是用于存储值的长度为 N 的数组。 (比赛已经结束,我没有作弊)如果有人能帮助我了解 std::cin 的工作原理,那就太好了。 一开始我以为会和python的input()一模一样,但是不一样。 谢谢。

首先,您的变量声明中有一个错字。 你应该在语句中只写一次类型,所以它应该是int n = 0, k = 0; .

提取 ( >> ) 运算符仅读取单个数字。 要将输入输入到数组中,您只需编写一个循环:

int a[1000];
for (int i = 0; i < n; i++)
{
    std::cin >> a[i];
}

这只是读取n数字并将它们存储到a中的连续元素中。

如果你想花哨,你可以使用 stream 迭代器:

std::copy_n(std::istream_iterator<int>(std::cin), n, a);

std::istream_iterator<int>(std::cin)构造一个 stream 迭代器,它从std::cin中提取int std::copy_n然后将n数字从 stream 迭代器复制a . 您需要#include <iterator>#include <algorithm>才能使用它。 如果您还不了解这一点,您可能会想要坚持使用循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM