如何在c ++程序中没有输入后退出+

时间:2011-04-26 04:42:08

标签: c++

大家好我是c ​​++的新手,我只是编写了这段代码来查找数字数组的最小值/最大值 我只是想知道如何才能做到。条目的灵活性(我的意思是用户应该能够输入尽可能多的条目,而无需指定起始中的条目数)
这是代码,但它不起作用,有人可以帮忙吗? 谢谢 代码:

#include <iostream>
using namespace std;
int main(){

    cout<<"Program to calculate max/min/second max\n";
    int *A;
    A=new int[5];
    bool flag=false;
    int x=0,i=0;
    cout<<"Enter the numbers\n";

    do{

        cin>>x;
        if(x=='\0'){
            flag=true;
        }
        *(A+i)=x;
        i++;

    }
    while(!flag);

    for(int j=0;j<i;j++){


        cout<<*(A+j)<<"\n";

    }

    return 0;
}

5 个答案:

答案 0 :(得分:3)

你很困惑,按Enter键只会给你空终止符。它不会。根据您的平台,它将为您提供回车/换行(Win中为\r\n,* ix中为\n。这样做的最好方法是让他们使用像'q'这样的字母来戒烟或者像-1这样的数字,然后比较它。

答案 1 :(得分:1)

动态内存分配对于初级程序员来说是一个棘手的主题(在任何情况下都是C和C ++。)最简单的方法是让用户指定多少条目,但是你不希望这样。

否则在数组上使用向量类可能更好(并且比直接使用指针更容易解决。)

http://www.cplusplus.com/reference/stl/vector/是个好地方。查看用于创建向量的语法和用于完成任务的push_back()成员函数。

祝你好运,

SegFaults McGee

答案 2 :(得分:0)

  

意味着用户应该能够输入尽可能多的条目,而无需指定起始

中的条目数

根据上述要求和您拥有的代码,您可以为数组输入不超过5个元素。

do{ 
    cin>>x;
    if(x=='\0'){
       flag=true;
    }
    *(A+i)=x;
    i++;
}while(!flag);

使用std::vector代替隐式管理内存的要求。

答案 3 :(得分:0)

您必须使用某种可变长度的数据结构,而Vector是最佳选择,因为您使用的是C ++。因此,而不是你的固定长度数组:

int *A;
A=new int[5];

使用这样的矢量:

std::vector<int> input;

然后要为此添加值,请使用以下命令:

input.push_back(10);

There is an example on this page about using vectors.

答案 4 :(得分:0)

如果您使用

std::vector<int> a;

然后输入变得简单

while (std::cin >> x)
    a.push_back(x);

然后用户可以在输入所有数字后按^ D(Unix / Linux / etc)或^ Z(DOS / Win),或者使用以下程序:

echo 1 4 22 | program
program < input_file

如果您想要一个空行表示输入结束,那么使用输入验证:

std::string line;
while (getline(std::cin, line))
{
    char c;
    std::istringstream iss(line);
    int x;
    if (iss >> x)
    {
        a.push_back(x);
        char c;
        if (iss >> c)
        {
            std::cerr << "unexpected character '" << c << "' in line '" << line << "', terminating\n";
            exit(EXIT_FAILURE);
        }
    }
    else if (!iss.eof())
        break;  // empty line...
    else
    {
        std::cerr << "unexpected characters in line '" << line << "', terminating\n";
        exit(EXIT_FAILURE);
    }
}