在 C++ 上使用 eof

发布于 2024-12-04 07:13:06 字数 563 浏览 3 评论 0原文

我正在寻找此 pascal 代码的 C++ 编码,

var
jumlah,bil : integer;
begin
jumlah := 0;
while not eof(input) do
begin
   readln(bil);
   jumlah := jumlah + bil;
end;
writeln(jumlah);
end.

我不明白在 C++ 上使用 eof

的目的是计算从第 1 行到文件编辑末尾的数据

: 好吧,我尝试了这个,但没有运气

#include<iostream>
using namespace std;

int main()
{
    int k,sum;
    char l;
    cin >> k;
    while (k != NULL)
    {
          cin >> k;
          sum = sum + k;
    }
    cout << sum<<endl;
}

抱歉,我是 C++ 新手

i am looking for C++ coding for this pascal code

var
jumlah,bil : integer;
begin
jumlah := 0;
while not eof(input) do
begin
   readln(bil);
   jumlah := jumlah + bil;
end;
writeln(jumlah);
end.

i don't understand using eof on C++

it's purpose is to calculate data from line 1 to the end of the file

edit :
well i tried this but no luck

#include<iostream>
using namespace std;

int main()
{
    int k,sum;
    char l;
    cin >> k;
    while (k != NULL)
    {
          cin >> k;
          sum = sum + k;
    }
    cout << sum<<endl;
}

sorry i am new to C++

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瞎闹 2024-12-11 07:13:06

您已经非常接近了,但可能受到 Pascal 背景的影响比理想情况要多一些。您可能想要的更像是:

#include<iostream>
using namespace std;   // Bad idea, but I'll leave it for now.

int main()
{
    int k,sum = 0; // sum needs to be initialized.
    while (cin >> k)
    {
          sum += k;  // `sum = sum + k;`, is legal but quite foreign to C or C++.
    }
    cout << sum<<endl;
}

或者,C++ 可以将文件大致视为顺序容器,并像使用任何其他容器一样使用它:

int main() { 
    int sum = std::accumulate(std::istream_iterator<int>(std::cin), 
                              std::istream_iterator<int>(),
                              0);    // starting value
    std::cout << sum << "\n";
    return 0;
}

You're pretty close, but probably being influenced a bit more by your Pascal background than is ideal. What you probably want is more like:

#include<iostream>
using namespace std;   // Bad idea, but I'll leave it for now.

int main()
{
    int k,sum = 0; // sum needs to be initialized.
    while (cin >> k)
    {
          sum += k;  // `sum = sum + k;`, is legal but quite foreign to C or C++.
    }
    cout << sum<<endl;
}

Alternatively, C++ can treat a file roughly like a sequential container, and work with it about like it would any other container:

int main() { 
    int sum = std::accumulate(std::istream_iterator<int>(std::cin), 
                              std::istream_iterator<int>(),
                              0);    // starting value
    std::cout << sum << "\n";
    return 0;
}
歌入人心 2024-12-11 07:13:06

通常的习惯用法是

while (std :: cin >> var) {
   // ...
}

operator>> 失败后,cin 对象转换为 false,通常是因为 EOF:检查 badbit、eofbit 和 failurebit

The usual idiom is

while (std :: cin >> var) {
   // ...
}

The cin object casts to false after operator>> fails, usually because of EOF: check badbit, eofbit and failbit.

浪菊怪哟 2024-12-11 07:13:06

要格式化 David 上面所写的内容:

#include <iostream>
#include <string>

int main()
{
    int jumlah = 0;
    std::string line;
    while ( std::getline(std::cin, line) )
        jumlah += atoi(line.c_str());

    std::cout << jumlah << std::endl;
    return 0;
}

您还可以在 http://www.cplusplus.com/ 找到更多信息参考/iostream/

To format what David wrote above:

#include <iostream>
#include <string>

int main()
{
    int jumlah = 0;
    std::string line;
    while ( std::getline(std::cin, line) )
        jumlah += atoi(line.c_str());

    std::cout << jumlah << std::endl;
    return 0;
}

You can also find more information at http://www.cplusplus.com/reference/iostream/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文