我不太明白为什么我得到这个关于向量的错误
I dont quite understand why i am getting this error concerning vectors
我的程序接受两个输入文件,其中一个是命令列表。文件的每一行都是一个新的命令,所以我想把这个文件解析成一个数组。我被告知使用一个动态增长的向量,这样就不需要一个函数来计算文件中的行数,然后使用这些数据来创建一个数组。
下面是我现在的程序:
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;
//Prototypes
int parseLines(ifstream& countfile);
vector<string> parseLines(ifstream& countfile)
//counts number of lines in file passed to function
{
string line;
vector<string> lines;
int numberOfLines;
//reads through each line until end of file putting each line in a sperate entry of the vector
while(getline(countfile, line))
{
lines.push_back(line);
}
return lines;
}
int main (int argc, char* argv[])
{
int i;
if(argc != 3) cout << "Usage: calendar.out datafile inputfile";
//Create input streams to both files
ifstream apptsfp;
ifstream inputfp;
//Open streams to both files
apptsfp.open(argv[1]);
inputfp.open(argv[2]);
if(!inputfp.is_open())
{
cerr << "failed to open input filen";
return 1;
}
vector<string> inputVector;
vector<string> apptsVector;
inputVector = parseLines(inputfp);
for(i=0; i<= inputVector.size(); i++)
{
cout << "Input " << i << ": " << inputVector[i] << endl;
}
return 0;
}
和我得到这个长错误当我编译,我不太明白它:
$ g++ calendar.cpp
calendar.cpp: In function ‘std::vector<std::basic_string<char> > parseLines(std::ifstream&)’:
calendar.cpp:17:46: error: new declaration ‘std::vector<std::basic_string<char> > parseLines(std::ifstream&)’
calendar.cpp:14:5: error: ambiguates old declaration ‘int parseLines(std::ifstream&)’
calendar.cpp: In function ‘int main(int, char**)’:
calendar.cpp:58:37: error: no match for ‘operator=’ in ‘inputVector = parseLines((* & inputfp))’
calendar.cpp:58:37: note: candidate is:
In file included from /usr/include/c++/4.7/vector:70:0,
from calendar.cpp:9:
/usr/include/c++/4.7/bits/vector.tcc:161:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >]
/usr/include/c++/4.7/bits/vector.tcc:161:5: note: no known conversion for argument 1 from ‘int’ to ‘const std::vector<std::basic_string<char> >&’
我觉得我不太懂如何使用向量
原型
int parseLines(ifstream& countfile);
实现vector<string> parseLines(ifstream& countfile)
返回类型不同
不是问题,而是另一个错误
for (i = 0; i <= inputVector.size(); i++)
应该 for (i = 0; i < inputVector.size(); i++)
问题是在int parseLines(ifstream& countfile);
函数声明。与后来的vector<string> parseLines(ifstream& countfile)
定义有冲突:
先修改
vector<string> parseLines(ifstream& countfile);
此外,由于此函数定义在使用之前,因此可以删除其声明。
相关文章:
- 写入向量<向量<bool>>
- 如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- C++在 2 个向量向量之间交换向量
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 创建要在类中使用的向量向量,并使用 CERNROOT 绘制
- C++如何将字符数组转换为字节向量(向量<byte>)
- 向量向量的分割错误
- 关于在向量向量上使用基于范围的 for 循环
- 为什么我不能返回向量<向量<int>>(进程返回 -1073741819 (0xC0000005))
- C++如何为向量向量构建迭代器
- C++:向量<向量<int>>迭代器?
- 指针(指向指针)和新/malloc 向量(向量内部)c++
- 在每个向量<向量中查找最小/最大 x,y<Point>>
- 使用迭代器成员函数是否仅适用于某些向量类型"empty()"?
- 为运算符编写模板<<适用于任何向量
- 对于作用于整数向量的循环行为异常
- 将条件应用于整个向量
- 使用模板将类函数应用于对象向量
- C++ 矢量复制适用于一个向量,但不适用于另一个向量