【发布时间】:2020-11-17 19:47:23
【问题描述】:
这是我的代码,其中 prime.txt 包含一些素数:7、11、13、17、23...:
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
string file= "primes.txt";
ifstream fichier;
fichier.open(file);
int count = 0, prime;
int *buffer = (int*) malloc(8080*sizeof(int));
while ( fichier >> prime){
buffer[count] = prime;
count++;
}
fichier.close();
return 0;
}
我想知道是否有一种方法可以在不使用循环的情况下从文件数据中分配数组?我看到你可以用二进制文件来做,但我想知道我们是否也可以用字符串或 int 来做。
【问题讨论】:
-
你真的需要在
c++程序中使用 malloc() 吗?我假设您不允许使用std::vector -
是的,因为我想和它一起使用 ippmalloc
-
您的代码看起来不错,只是缺少免费的。在现代的
c++程序中,我们将使用std::vector<int>并避免手动内存管理或读取文件2 次。 -
如果您想多次执行某项操作,则使用循环。你能解释一下你希望代码是什么样子吗?
-
它仅适用于二进制文件,因为(通常)您正在处理固定大小的记录的二进制文件。所以你只需将文件的大小除以记录的大小。 提供您的所有质数都存储在相同数量的字符中,同样的技术也适用于文本文件。不过,这似乎不太可能,所以我认为您将不得不使用循环。