2

C++ 是否可以通过文件句柄访问 infile 数据?例如,Perl 中的典型习语是:

while (<DATA>) {
  chomp;
  # do sth with $_
}

__DATA__
Foo
Bar

在 C++ 中这样做的方法是什么?

4

3 回答 3

5

你的意思是在程序中包含文件?

不,C++ 做不到。与 Perl 不同。有许多工具可以将二进制或文本文件打包为 C/C++ 源代码。它们最终成为一个全局数组。

我一直觉得有用的一件事是能够将随机内存作为文件句柄打开,这与您似乎要问的类似。在标准 C++ 中,这可以通过 istringstream 类来完成,它具有与 ifstream 相同的接口。

但是您的问题的上下文可能意味着有更好的方法来完成您在 C/C++ 中的想法。需要更多信息。

于 2009-02-21T10:38:56.767 回答
2

C++ 没有惯用的方法来做到这一点。请改用单独的数据文件。

根据您的平台,您可能希望使用资源来实现类似的结果,但这超出了 C++ 的范围。特别是,要将资源存储在二进制文件中,您需要使用外部工具并在代码中读取这些资源,您需要调用平台 API。例如在 Windows 下,有LoadResource函数(和相关的)。

于 2009-02-21T10:46:15.673 回答
2

我不会说它是惯用的,因为我从未在任何 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;
}
于 2009-02-21T11:20:40.707 回答