我正在从txt生成输出,也从txt生成输入,但是,txt文件是79MB。我不知道它为什么停止工作,而且,我使用循环输入,输入文本中的行是9.000.000行,所以我需要循环3000 ^ 2,但我不知道#39;知道什么是错的,它在编译之后就崩溃了。 这是代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
freopen("hex.txt","r",stdin);
freopen("css.txt","w",stdout);
cout << ".container{\nwidth: 3000px;\nheight: 3000px;\n}\n";
cout << ".px{\nfloat: left;\nwidth: 1px;\nheight: 1px;\n}\n";
string hex[3000][3000];
for (int i=0; i<3000; i++)
{
for (int j=0; j<3000; j++)
{
cin >> hex[i][j];
}
}
for (int i=0; i<3000; i++)
{
for (int j=0; j<3000; j++)
{
cout << ".b" << i+1 << "k" << j+1 << "{\nbackground: "<< hex[i][j] << ";\n}" << endl << endl;
}
注意:hex.txt大小为79MB,当它停止工作时,&#34; css.txt&#34; (输出文件)不存在,当程序试图读取freopen时,我确定它会崩溃(&#34; hex.txt&#34;,&#34; r&#34;,stdin) ; 我也使用Codeblocks 16.01,如果我删除代码中的第5行,它仍然会崩溃,我只是在我的代码块中调试它说分段错误,我该如何解决这个问题?谢谢! 编辑:问题在cin之后立刻被cout解决了,那就是他的工作!我还没有尝试使用矢量,但现在我知道使用字符串hex [3000] [3000]没有用,因为空间太小。 对不起我的英文不好。
答案 0 :(得分:0)
string hex [3000] [3000]; 堆栈空间太小,无法分配大型数组,您可以使用vector&lt; vector&lt; string&gt;&gt;避免这种情况。 如
vector<vector<string> > hex(3000, vector<string>(3000));