概述
参考链接:https://bbs.csdn.net/topics/391879459?list=26646347
问题描述:
统计.txt文件的行数和获得几行几列的数据
例如文件数据如下:
问题解决:
(注:此代码是VS编译器实现的,在其他编译器请适当修改代码)
(对此traversal.cpp和main.cpp可以合并一个cpp文件)
头文件Test.h
#include <vector>
#include <string>
class CTest
{
public:
CTest(void);
~CTest(void);
void readFile(const std::string& vFileName);
std::vector<std::vector<std::string>> getData() { return m_Vec; }
unsigned int getNum();
private:
std::vector<std::vector<std::string>> m_Vec;
unsigned int m_Num;
unsigned int count = 0;
};
源文件traversal.cpp(其实任意文件名都可以)
#include "Test.h"
#include <fstream>
CTest::CTest()
{
m_Num = 0;
}
CTest::~CTest()
{
}
void CTest::readFile(const std::string& vFileName)
{
std::ifstream InFile(vFileName.c_str());
if (InFile.is_open())
{
std::string LenStr;
while (getline(InFile, LenStr))
{
unsigned int Found = 0;
int Pos = 0;
std::vector<std::string> TempVec;
for (unsigned int i=0; i<LenStr.length()/2; ++i)
{
Found = LenStr.find(' ',Pos);
std::string TempData= LenStr.substr(Pos, Found-Pos);
TempVec.push_back(TempData);
Pos = Found +1;
}
m_Vec.push_back(TempVec);
count++;
}
}
}
unsigned int CTest::getNum()
{
return count;
}
main.cpp (其实任意文件名都可以)
#include "Test.h"
#include <iostream>
int main()
{
CTest* Test = new CTest;
Test->readFile("test.txt");
std::vector<std::vector<std::string>> Vec;
Vec = Test->getData();
//显示第几行第几列数据
std::cout << Vec[2][1] << std::endl;//如第三行第第二个数据
//显示数据的个数
std::cout << Test->getNum() << std::endl;
system("pause");
return 0;
}
运行效果
Ps
由于已获得文件行数和单个数据,就可以以行遍历整个文件,把某列存于一个数组。注意:这里的Vec是string类型的,想要存放在double数组,可以把Vec类型由string,转换成double就可以了。
可将如下函数,放在main文件,就可以调用此函数把string转换成double,如:strDou(Vec[2][1])。
double strDou(string str) { //string 转换 double
char *ch = new char[0];
double d;
for (int i = 0; i != str.length(); i++)
ch[i] = str[i];
d = atof(ch);
return d;
}
最后
以上就是贪玩大侠为你收集整理的C++——统计.txt文件的行数和获得几行几列的数据的全部内容,希望文章能够帮你解决C++——统计.txt文件的行数和获得几行几列的数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复