[英]c++ map stl error : size of array 'apn2policy' has non-integral type 'const char [13]'
[英]error: size of array ‘u’ has non-integral type ‘double’|
我有以下代码,并且收到错误“数组'u'的大小具有非整数类型'double'|”
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#define steps 1000.0
#define time 1000.0
using namespace std;
int main()
{
double u[steps][time];
double a;
int data[10];
cout << "Please enter the value of ratio cdt/dx :"<<endl;
cin >> a;
//initialize matrix u
for (int i=0;i<steps;i++)
for (int j=0;j<time;j++)
u[i][j]=0;
// fill matrix u
for (int i=1;i<time-1;i++) {
for (int j=1;j<steps-1;j++){
if (i==1)
u[j][i]=0; //initial condition
else
if (j==1 && i>=1 && i<=50)
u[j][i]=50;
else
u[j][i+1]=pow(a,2)*(u[j+1][i]-2*u[j][i]+u[j-1][i])+2*u[j][i]-u[j][i-1]; //solution of wave equation
}
}
//create and open data files
for (int k=1;k<=10;k++){
ofstream data[k];
data[k].open("Data"data[k]".dat");
}
//fill files with data
for (int i=1;i<steps;i++){
data1<<i<<"\t"<<u[i][99]<<endl;
data2<<i<<"\t"<<u[i][199]<<endl;
data3<<i<<"\t"<<u[i][299]<<endl;
data4<<i<<"\t"<<u[i][399]<<endl;
data5<<i<<"\t"<<u[i][499]<<endl;
data6<<i<<"\t"<<u[i][599]<<endl;
data7<<i<<"\t"<<u[i][699]<<endl;
data8<<i<<"\t"<<u[i][799]<<endl;
data9<<i<<"\t"<<u[i][899]<<endl;
data10<<i<<"\t"<<u[i][999]<<endl;
}
//close files
for (int k=1;k<=10;k++){
data[k].close();
}
return 0;
}
这是关于u的大小的错误吗?我该如何克服呢? 另外,在这部分代码中
//create and open data files
string k;
stringstream ss;
ss << k;
filename += ss.string();
string filename = "Data";
for (int k=1;k<=10;k++){
ofstream data[k];
filename += data[k];
filename += ".dat";
data[k].open(filename);
}
它给我“未声明文件名”和“'struct std :: stringstream'没有名为'string'的成员”
我做了那个循环,因为我试图避免
流数据1; ofstream data2; .......我可以使其工作吗?
谢谢!
是的,只需将步骤和时间从1000.0更改为1000
就像编译器说的那样,1000.0的类型为double-一个浮点值。 数组大小必须为整数。 无论如何,您不能有1.5个元素!
关于data[k].open("Data"data[k]".dat");
。 在C和C ++中,可以通过写"foo" XXX "bar"
来联接字符串文字 ,但这不适用于直到运行时才知道的值。 相反,您必须使用std::string
和+
运算符,例如:
std::string filename = "Data";
filename += data[k];
filename += ".dat";
data[k].open(filename);
或者(如果open
需要一个普通的C字符指针):
data[k].open(filename.c_str());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.