不是逐行读取文件

时间:2015-05-29 20:17:25

标签: c++

所以我需要从文件中读取n个数字,并在屏幕上仅打印那些素数。确定数字是否为素数的代码正在运行,但在检查数字后,它不想检查其他n个数字。

#include <iostream>
#include <fstream>
#include <conio.h>

using namespace std;


int main()
{
 int n = 0;
 unsigned int x = 0;

cout << "n= ";
cin >> n;

ifstream f("numbers.txt");

for (int i = 1; i <= n; i++)
{
    int p = 1;
    f >> x;

        if (x % 2 == 0)
        {
            if (x == 2)
                cout << x << endl;
        }
        else
        {
            for (int i = 3; i <= x / 2; i++)
            {
                if (x%i == 0)
                    p = 0;
            }
            if (p == 1)
                cout << x << endl;
        }
        cout << "i= " << i << "x= " << x<<endl;
}



f.close();
_getch();
return 0;
}

文件是

53
34
65
234
756
342
988
997
1
2
97
234
87
234
867
37
234

这是对文件输出的测试,因为我无法发布图像

53
i= 1x= 53
i= 2x= 34
i= 3x= 65
i= 4x= 234
i= 5x= 756
i= 6x= 342
i= 7x= 988

1 个答案:

答案 0 :(得分:0)

您应该通过这种方式阅读文件:

std::ifstream f("your_file_name.txt");
unsigned long int x;
while(f >> x)  // will be 0 when the value can't be read (= at the end of the file)
  if(is_prime(x))
    std::cout << x << std::endl;

请注意,不需要在作用域末尾关闭文件。 f的析构函数将完成这项工作。