используя eof на C ++ - PullRequest
       15

используя eof на C ++

4 голосов
/ 12 сентября 2011

Я ищу кодирование C ++ для этого кода Паскаля

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

Я не понимаю, используя eof на C ++

его цель - вычислить данные от строки 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 ++

Ответы [ 3 ]

6 голосов
/ 12 сентября 2011

Вы довольно близки, но, вероятно, под вашим влиянием немного больше, чем в идеале. То, что вы, вероятно, хотите, больше похоже на:

#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;
}
6 голосов
/ 12 сентября 2011

Обычная идиома

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

Объект cin сбрасывается в false после сбоя operator>>, как правило, из-за EOF: проверка битов, эофитов и битов .

4 голосов
/ 12 сентября 2011

Чтобы отформатировать то, что Дэвид написал выше:

#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/reference/iostream/

...