繁体   English   中英

std::cout 没有 output 任何东西

[英]The std::cout does not output anything

我正在阅读 Stroustrup 的书《使用 C++ 进行编程原理和实践》。 我可以输入温度,但在控制台中没有得到 std::cout。 我没有编译错误。

这是代码。


#include <iostream>
#include <vector> // I added this which is different from the book

void push_back(std::vector<double> temps, double value) { // I added this which is different from the book, maybe I don't need this but I found it doing a search
    temps.push_back(value);
}

int main() {
    std::vector<double> temps;

    double temp = 0;
    double sum = 0;
    double high_temp = 0;
    double low_temp = 0;

    std::cout << "Please enter some integers"<< '\n';  // I added this in for the prompt

    while (std::cin >> temp)
        temps.push_back(temp);

    for (int i = 0; i < temps.size(); ++i) {
        if (temps[i] > high_temp) high_temp = temps[i];
        if (temps[i] < low_temp) low_temp = temps[i];
        sum += temps[i];
    }
        std::cout << "High temperature: " << high_temp << std::endl;  // There is no output for this and the next two lines
        std::cout << "Low temperature: " << low_temp << std::endl;
        std::cout << "Average temperature: " << sum/temps.size() << std::endl;

    return 0;
}


您的代码的问题在于它一直在循环等待输入。 我稍微改变了一下,询问要输入多少值,以便您检查 output 是否实际工作。

#include <iostream>
#include <vector> // I added this which is different from the book

void push_back(std::vector<double> temps, double value) { // I added this which is different from the book, maybe I don't need this but I found it doing a search
    temps.push_back(value);
}

int main() {
    std::vector<double> temps;

    double temp = 0;
    double sum = 0;
    double high_temp = 0;
    double low_temp = 0;
    int ntemp;

    std::cout << "Enter the number of temperatures to input:";
    std::cin >> ntemp;

    std::cout << "Please enter " << ntemp << " doubles"<< '\n';  

    for (int i = 0; i < ntemp; ++i)
    { 
        std::cin >> temp;
        temps.push_back(temp);
    }

    for (int i = 0; i < temps.size(); ++i) {
        if (temps[i] > high_temp) high_temp = temps[i];
        if (temps[i] < low_temp) low_temp = temps[i];
        sum += temps[i];
    }
        std::cout << "High temperature: " << high_temp << std::endl;  // There is no output for this and the next two lines
        std::cout << "Low temperature: " << low_temp << std::endl;
        std::cout << "Average temperature: " << sum/temps.size() << std::endl;

    return 0;
}

您在 output 中看不到任何内容,因为您的程序在执行指令完成后立即终止。 你可以使用 getch(); 或系统(“暂停”); 这样,程序将需要键盘命令。

我在线尝试了您的代码,实际上在控制台中获得了std::cout -prints。 但是,正如 jrok 和 Jarod42 在评论中提到的那样,用户必须通过输入无法解析为双精度的输入来终止 while 循环。 再次访问 Stroustrup 的书(Programming Principles and Practice Using C++)中的第4.6.3 A numeric example 那里说:

我们使用了字符“|” 终止输入——任何不是双精度的都可以使用。 在第 10.6 节中,我们讨论了如何终止输入以及如何处理输入中的错误。

暂无
暂无

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

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