提问人:RiverX15 提问时间:11/30/2022 最后编辑:RiverX15 更新时间:11/30/2022 访问量:160
C++ 中的一行中有多个输入
Multiple inputs in one line in C++
问:
我刚开始学习C++,但遇到了这个问题。我需要在一行中插入(用户输入的)数量的元素,并带有空格分隔。如果知道元素的数量,我可以写.但是我该如何使用任意数量的元素(也许是循环)来做到这一点呢?cin >> var1 >> var2 >> ... >> varN;
这就是我正在尝试做的:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i=0; i<n; i++) {
//stuck here
}
}
我本可以写并继续,但这需要用户在每次输入后按回车键,由于问题的限制,我无法做到这一点。如何编写代码,以便可以在一行中给出数组元素的所有输入?cin >> arr[i];
PS:我已经在网站上看到过几个类似的问题,但其中大多数都涉及使用向量的实现,或者超出了我目前的理解水平。一个更简单的解决方案将不胜感激。
答:
4赞
Devansh_Jain_21
11/30/2022
#1
cin>>arr[i]
不需要用户在每次输入后都按回车键。
您只需要在整数输入之间留出空格即可。它将正常扫描阵列。
评论
1赞
hackinghorn
11/30/2022
这是正确的!只需放入并测试即可cin >> arr[i];
0赞
RiverX15
11/30/2022
啊,是的,它工作得很好!我认为将换行符作为每个输入的默认分隔符,并认为存在一些替代方案可以将其更改为空格。cin
0赞
john
11/30/2022
cin
是一个流,没有分隔符的概念。输入运算符和函数可能(也可能不)定义分隔符。
0赞
Lasersköld
11/30/2022
#2
您可能希望将数组替换为 a 以使其在运行时可调整大小。如果您确实像您的示例中那样,程序将不会编译,因为不知道程序何时构建。std::vector
n
这是一个简单的例子
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int n = 0;
cin >> n;
vector<string> arr; // A vector (ie kind of a variable sized array)
for (int i=0; i<n; i++) {
string str;
cin >> str; // Read a word
arr.push_back(str); // Add a string to the vector
}
// To use the data
for (int i = 0; i < arr.size(); ++i) {
cout << arr.at(i) << "\n"; // Print value of vector
}
// or like this
for (auto str: arr) {
cout << str << "\n";
}
}
评论
arr[i]
#include < bits/stdc++.h>
? 也许这个 为什么“使用命名空间 std;”被认为是不好的做法?.请注意,C 和 C++ 是两种不同的语言。