![]() |
1
19
你不能,不可靠。即使它将进行编译,也很容易破坏运行时库或操作系统假设等。 如果你告诉我们 为什么? 你想这么做,我们可以提供 太多了 备选方案。决定如何处理任意大的数据是编程的一个主要部分。 编辑添加: 我不是猜测,而是调查 MSDN :
本页结束:
其他编译器怎么说? 进一步编辑以添加: 我创建了这样的文件:
我不断地把
8388608字节字符串成功;16777216字节失败,出现“堆空间不足”错误。 |
![]() |
2
14
我怀疑你遇到了字符串大小的设计限制。 大多数人真的认为一百万个字符足够长。 为了避免这样的设计限制,我尽量不要将整个内容放在一个单独的文本字符串中。基于对宏观实体的定义同样也有类似的限制的怀疑,我也不想把整个事情放在一个单一的定义中。 大多数C编译器将接受相当大的单个字符列表作为初始值设定项。如果你写
如果你的角色是你自己,你可能会成功。我见过gcc2应用程序,其中有200万个这样的元素(很明显,它们正在加载某种类型的ROM映像)。你甚至可以根据自己的喜好将C_i分为k=100、1000、10000个K字符块,这可能对编译器有帮助。 您还可以考虑通过压缩算法运行字符串, 通过上述方法将压缩结果放入C++文件中, 并在程序加载后进行解压缩。 我怀疑您可以将解压算法转换成几千个字节。 |
![]() |
3
9
将字符串存储到一个文件中,然后打开并读取它… 这样更干净/更有条理[我假设现在您有一个名为blargh.h的文件,其中包含一个define…] |
![]() |
4
9
嗯,把这个字符串存储在一个单独的资源中,然后载入?说真的,在嵌入式土地中,您将把它作为一个单独的资源,而不是保存在RAM中。在Windows上,我相信您可以使用.dlls或其他外部资源来处理这个问题。编译器并不是为您保存这种规模的资源而设计的,它们将失败。 |
![]() |
5
7
增加编译器堆空间。 |
![]() |
6
5
如果字符串来自大文本或二进制文件,则可以使用
注意,在这种情况下,字符串不能以空结尾。 见前面问题的答案。 How can I get the contents of a file at build time into my C++ string? “
(另外,作为旁白:注意
|
![]() |
7
0
这是一个非常古老的问题,但由于还没有明确的答案:C++ 11的原始字符串文字似乎是做这项工作的。 这在GCC 4.8中表现得很好:
正如本文中其他文章所述,这绝对不是处理大量数据的首选方法。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |