C++ 在';之前应为主表达式';代币

C++ 在';之前应为主表达式';代币,c++,vector,C++,Vector,我试图用向量调用函数,出于某种原因,它会说“在']'之前应该有一个主表达式”。向量可以容纳任意数量的文件,这取决于myfile中的数字数量,所以我不确定应该放在那里什么 #包括 #包括 #包括 #包括 使用命名空间std;//不推荐 双平均值计算器(字符串[],int); int main(){ 双倍平均; 弦线; ifstream myfile(“array_pgmdata.txt”); //int index=0;//不需要 //字符串myArray[index];//UB-如果它甚至可以编

我试图用向量调用函数,出于某种原因,它会说“在']'之前应该有一个主表达式”。向量可以容纳任意数量的文件,这取决于myfile中的数字数量,所以我不确定应该放在那里什么

#包括
#包括
#包括
#包括
使用命名空间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

cout
myArray
是一个向量,但您的函数需要一个数组。这是一个输入错误吗?
std::vector myArray;
--为什么您的函数不声明为使用一个
std::vector
(或引用一个),如果这就是您要发送给它的内容?很简单——如果您的类型是
T
,则声明您的函数以获取
T
或对
T
的引用。这并不重要"
T
似乎是。@chrisMM可能吧!起初我把它当作一个数组,不知道我需要更改它以便将数据类型切换为“int”吗?我只是将所有的“string”字替换为“int”字吗?计算必须以int或double形式进行,但是如果你想键入worlds,你需要使用我发送的函数使其为int,而单词可以是int计算