C++ 错误:数组的大小‘;u&x2019;具有非整数类型‘;双人床’|

C++ 错误:数组的大小‘;u&x2019;具有非整数类型‘;双人床’|,c++,arrays,C++,Arrays,我有以下代码,收到错误“数组'u'的大小具有非整数类型'double'|” #包括 #包括 #包括 #包括 #包括 #定义步骤1000.0 #定义时间1000.0 使用名称空间std; int main() { 双u[步数][时间]; 双a; 国际数据[10]; 是的,只需将步骤和时间从1000.0更改为1000 正如编译器所说,1000.0是双精度浮点值类型。数组大小必须是整数。无论如何,不能有1.5个元素!是的,只需将步骤和时间从1000.0更改为1000 就像编译器所说的,1000是双浮点

我有以下代码,收到错误“数组'u'的大小具有非整数类型'double'|”

#包括
#包括
#包括
#包括
#包括
#定义步骤1000.0
#定义时间1000.0
使用名称空间std;
int main()
{
双u[步数][时间];
双a;
国际数据[10];

是的,只需将步骤和时间从1000.0更改为1000


正如编译器所说,1000.0是双精度浮点值类型。数组大小必须是整数。无论如何,不能有1.5个元素!

是的,只需将步骤和时间从1000.0更改为1000


就像编译器所说的,1000是双浮点值。数组大小需要是整数。无论如何,你不能有1.5个元素!

< P>关于代码>数据[K]。打开(“数据”数据[k],dAT);< /c++ >,在C和C++中,你可以通过写<代码>“Fo”xxx“bar”来加入<强>字符串文字< /强>。
,但这不适用于运行时才知道的值。相反,您必须使用
std::string
+
运算符,例如:

std::string filename = "Data";
filename += data[k];
filename += ".dat";
data[k].open(filename);
或者(如果
open
采用普通C字符指针):


<>关于<代码>数据[k] .OPEN(“数据”数据[k],.dAT);。在C++和C++中,可以通过编写<代码>“Fo”xxx“bar”< /C>来加入<强>字符串字符串< <强> >,但这与运行时不知道的值不符。相反,必须使用<代码> STD::String < /C> >和+/Cuth>操作符,例如:

std::string filename = "Data";
filename += data[k];
filename += ".dat";
data[k].open(filename);
或者(如果
open
采用普通C字符指针):



步骤和时间是双重的。请使用整数,去掉。0在声明carray时不应使用浮点值,如果使用#定义步骤1000,则可以使用浮点值,但最好使用常量值:const int steps=1000;我真的不明白如何处理流数据[k],但k需要是一个常量值,这样编译器才能知道carray的大小,您可以输入流数据[10];在for loop之外您好,谢谢大家,这是steps,time是double。使用int,out。0在声明carray时不应该使用float值,如果使用#define steps 1000,它会起作用,但最好使用const值:const int steps=1000;我真的不明白您想对ofstream数据做什么[k],但k需要是一个常量值,以便编译器知道carray的大小,您可以将流数据[10]放入循环之外。您好,谢谢大家was@Lindydancer:您好,谢谢您的帮助。我按照您说的做了(我将它们放在循环中),现在它在文件名“+=data[k]”中为我提供了“运算符+=”的模糊重载,所以
data[k]
甚至不是字符串?在这种情况下,您必须将其转换为字符串。搜索
std::stringstream
,您会找到大量的示例。@Lindynancer:您好,我将数据转换为字符串,但在重载+=”时会出现相同的错误。如果可以很容易地告诉我该做什么,那么我不会使用此过程。您是否包括header文件
?@Lindydancer:是的,还有@Lindydancer:您好,谢谢您的帮助。我按照您所说的做了(我将它们放在循环中),现在它在文件名“+=data[k]”中为我提供了“运算符+=”的模糊重载,所以
data[k]
甚至不是字符串?在这种情况下,您必须将其转换为字符串。搜索
std::stringstream
,您会找到大量的示例。@Lindynancer:您好,我将数据转换为字符串,但在重载+=”时会出现相同的错误。如果可以很容易地告诉我该做什么,那么我不会使用此过程。您是否包括header文件
?@Lindydancer:是的,@boperson可以
2e5+6
被视为
double
类型吗?@boperson可以
2e5+6
被视为
double
类型吗?
std::string filename = "Data";
filename += data[k];
filename += ".dat";
data[k].open(filename);
data[k].open(filename.c_str());