首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用C存储标准输入中的连续读取输入?类似于“`while (cin >> x)”在C++中

如何用C存储标准输入中的连续读取输入?类似于“`while (cin >> x)”在C++中
EN

Stack Overflow用户
提问于 2022-10-05 22:12:02
回答 1查看 101关注 0票数 0

如何用C存储标准输入中的连续读取输入?类似于while (cin >> x)在C++?

假设我想将一组整数存储到没有预定义大小的数组/向量中。在C++中,我可以这样做:

代码语言:javascript
复制
vector<int> vec;
while (cin >> x) {
  vec.push_back(x);
}

我在网上没有发现任何类似于while (cin >> x)的东西。

对于类似于while (cin >> x)的东西,我发现最接近的是:

代码语言:javascript
复制
int x;
while(scanf("%d", &x) == 1) {
  // do stuffs
}

但是它所做的就是不断地读取每个输入,包括在终端中使用Enter键。所以它不会停止从终端读取输入。

EN

回答 1

Stack Overflow用户

发布于 2022-10-06 17:07:30

如果问题是如何在C和C++中实现自由形式的C++输入,那么scanf确实是一个不错的选择。这个简单的C程序:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int x;
    int i = 0;
    while(scanf("%d", &x) == 1) {
        printf("%d: %d\n", ++i, x);
    }
}

正好对应于这个简单的C++程序:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int main()
{
    int x;
    int i = 0;
    while (cin >> x) {
        cout << ++i << ": " << x << endl;
    }
}

对于这两个程序,输入

代码语言:javascript
复制
11
22

33
44 55 66
x

产生输出

代码语言:javascript
复制
1: 11
2: 22
3: 33
4: 44
5: 55
6: 66

请注意,在这两种情况下,空行都会被忽略,一行上的多个数字将被单独读取。非数字输入(此处为x)终止输入。

在Unix和Linux上,control也可以用来终止输入,在Windows上也可以使用control。

如果问题是如何将整数存储到自动增长的向量中,请参见How to replicate vector in c?C Vector/ArrayList/LinkedList

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73966803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档