C++ 在';之前应为主表达式';代币
我试图用向量调用函数,出于某种原因,它会说“在']'之前应该有一个主表达式”。向量可以容纳任意数量的文件,这取决于myfile中的数字数量,所以我不确定应该放在那里什么C++ 在';之前应为主表达式';代币,c++,vector,C++,Vector,我试图用向量调用函数,出于某种原因,它会说“在']'之前应该有一个主表达式”。向量可以容纳任意数量的文件,这取决于myfile中的数字数量,所以我不确定应该放在那里什么 #包括 #包括 #包括 #包括 使用命名空间std;//不推荐 双平均值计算器(字符串[],int); int main(){ 双倍平均; 弦线; ifstream myfile(“array_pgmdata.txt”); //int index=0;//不需要 //字符串myArray[index];//UB-如果它甚至可以编
#包括
#包括
#包括
#包括
使用命名空间std;//不推荐
双平均值计算器(字符串[],int);
int main(){
双倍平均;
弦线;
ifstream myfile(“array_pgmdata.txt”);
//int index=0;//不需要
//字符串myArray[index];//UB-如果它甚至可以编译,那么它就是一个大小为0的VLA。
std::vector myArray;//改用它来扩展它
//动态地
if(myfile)//打开并处于良好状态
{
//while(!myfile.eof())//当您读取最后一行时,它将不是eof
//只有当你读到最后一行之后,
//因此,您将在末尾额外添加一次“行”
//如果您使用该选项,请改用此选项:
while(getline(myfile,line))
{
//myArray[index++]这里有几个问题。首先,函数averageCalc
需要string[]类型的参数
这是一个字符串数组。调用函数时,您试图向它传递一个std::vector
,它不是字符串数组,而是一个类。您可能希望将函数更改为接受向量,如下所示:
double averageCalc( const std::vector<string> & nums ); // no need for size now
double averageCalc(const std::vector&nums);//现在不需要大小
另一个问题是调用函数。调用函数时,传递myArray[]
作为一个参数,这是编译器给你的错误。这不是有效的语法,你只需要传入myArray
我认为错误发生了,因为首先你用std::vector myArray;
创建数组,所以数据是字符串类型,但是当你想计算平均值时,函数expects值int、double等以执行数学运算。将字符串更改为int或使用函数将其转换:
int main()
{
string s = "12345";
// object from the class stringstream
stringstream geek(s);
// The object has the value 12345 and stream
// it to the integer x
int x = 0;
geek >> x;
// Now the variable x holds the value 12345
cout << "Value of x : " << x;
return 0;
}
intmain()
{
字符串s=“12345”;
//类stringstream中的
stringstream极客(s);
//该对象的值为12345和stream
//将其转换为整数x
int x=0;
极客>>x;
//现在变量x保存值12345
coutmyArray
是一个向量,但您的函数需要一个数组。这是一个输入错误吗?std::vector myArray;
--为什么您的函数不声明为使用一个std::vector
(或引用一个),如果这就是您要发送给它的内容?很简单——如果您的类型是T
,则声明您的函数以获取T
或对T
的引用。这并不重要"T
似乎是。@chrisMM可能吧!起初我把它当作一个数组,不知道我需要更改它以便将数据类型切换为“int”吗?我只是将所有的“string”字替换为“int”字吗?计算必须以int或double形式进行,但是如果你想键入worlds,你需要使用我发送的函数使其为int,而单词可以是int计算