C++ 是否可以通过文件句柄访问 infile 数据?例如,Perl 中的典型习语是:
while (<DATA>) {
chomp;
# do sth with $_
}
__DATA__
Foo
Bar
在 C++ 中这样做的方法是什么?
C++ 是否可以通过文件句柄访问 infile 数据?例如,Perl 中的典型习语是:
while (<DATA>) {
chomp;
# do sth with $_
}
__DATA__
Foo
Bar
在 C++ 中这样做的方法是什么?
你的意思是在程序中包含文件?
不,C++ 做不到。与 Perl 不同。有许多工具可以将二进制或文本文件打包为 C/C++ 源代码。它们最终成为一个全局数组。
我一直觉得有用的一件事是能够将随机内存作为文件句柄打开,这与您似乎要问的类似。在标准 C++ 中,这可以通过 istringstream 类来完成,它具有与 ifstream 相同的接口。
但是您的问题的上下文可能意味着有更好的方法来完成您在 C/C++ 中的想法。需要更多信息。
C++ 没有惯用的方法来做到这一点。请改用单独的数据文件。
根据您的平台,您可能希望使用资源来实现类似的结果,但这超出了 C++ 的范围。特别是,要将资源存储在二进制文件中,您需要使用外部工具并在代码中读取这些资源,您需要调用平台 API。例如在 Windows 下,有LoadResource
函数(和相关的)。
我不会说它是惯用的,因为我从未在任何 C++ 代码中看到它,但您可以使用 C++ 字符串流和 C 预处理器字符串粘贴将多行字符串视为输入流:
#include <sstream>
#include <iostream>
using namespace std;
const string data =
"once upon a time, " \
"a young lass called Goldilocks\n" \
"went for a walk in the forest.\n";
int main ()
{
istringstream in (data);
for (string line; getline(in, line); )
cout << line << endl;
return 0;
}