C ++是否可以通过文件句柄访问infile数据?例如,Perl中的典型习语是:
while (<DATA>) {
chomp;
# do sth with $_
}
__DATA__
Foo
Bar
在C ++中用这种方法做什么?
答案 0 :(得分:5)
您的意思是将文件包含在程序中吗?
不,C ++不能那样做。与Perl不同。有许多工具将采用二进制或文本文件并将它们打包为C / C ++源代码。它们最终成为一个全局阵列。
我总觉得有用的一件事就是能够将随机内存作为文件句柄打开,这与你看起来要求的类似。在标准C ++中,这可以通过istringstream类来完成,该类具有与ifstream相同的接口。
但是你的问题的背景可能意味着有更好的方法来实现你在C / C ++中的想法。需要更多信息。
答案 1 :(得分:2)
C ++没有惯用的方法。改为使用单独的数据文件。
根据您的平台,您可能希望使用资源来实现类似的结果,但这超出了C ++的范围。特别是,要将资源存储在二进制文件中,您需要使用外部工具,并在代码中读取这些资源,您需要调用平台API。例如,在Windows下,有LoadResource
函数(和相关的)。
答案 2 :(得分:1)
我不会说它是惯用的,因为我从未在任何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;
}