将带有图像值的文本(txt)文件读取到Vector中
Read a text (txt) file with image values into a Vector
我正在将包含图像值的txt文件读取到2D矢量中。然而,当代码完成读取文件时,当我检查向量的大小时,它的大小与我期望的向量的大小不相等(5568行乘5877列)。请告诉我哪里出了问题,我仍然是C++的学习者。以下是我的代码:
enum ERROR{
FAILED_TO_OPEN_FILE = 1,
FILE_IS_NOT_OPEN = 2
};
//load training vector
std::ifstream trainingset;
trainingset.open("E:\DATA\WorkDIR\Fuhrberg\2009\Input\try.txt");
if (!trainingset) {
cout << "Cannot open file.n";
return FAILED_TO_OPEN_FILE;
}
const int gRows = 5568, gCols = 5877;
vector <vector<int>> traindata(gRows, vector<int >( gCols ) );
if(!trainingset.is_open()) return FILE_IS_NOT_OPEN;
for (int iii = 0; iii < gRows; iii++){
vector<int> row;
for (int jjj = 0; jjj < gCols; jjj++){
int readFromFile = 0;
trainingset >> readFromFile;
row.push_back(readFromFile);
//cout << row[jjj] << "t"
}
traindata[iii] = row;
//cout << endl;
}
trainingset.close();
cout << "vector size t" << traindata.size() <<endl;
解决方案1
只需更改:
vector <vector<int>> traindata(gRows, vector<int >( gCols ) );
带有:
vector <vector<int>> traindata;
在第一种方式中,您使用gRows
元素(默认元素)创建vector
,然后使用push_back()
,因此在末尾插入更多元素。
此外,我建议您保留grows
,因此,您的代码将是这样的:
vector <vector<int>> traindata;
traindata.reserve(grows);
解决方案2
另一种可能性是让traindata
的定义保持原样,但不使用push_back()
,而是使用operator[]
和=
。
这样你就必须改变:
traindata.push_back(row);
带有:
traindata[iii] = row;
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量