您的位置:首页 > 编程语言 > C语言/C++

C++简单的读取txt文件的行,列数,并忽略空行和开头是//情况

2013-07-01 16:25 459 查看
主要用了sstream和getline来读取每一行中单词数和行数

#include <iostream>

#include <string>

#include <sstream>

#include <fstream>

#include <vector>
#include <algorithm>
using namespace std;

template <class T> 
void convertFromString(T &value, const std::string &s) {
	std::stringstream ss(s);
	ss >> value;
}
int main()
{

	//string FileName="test.txt";

//	istream  readFile(FileName);
	ifstream  readFile("test.txt");

	int line=0;
	string str,word;
	int row=0;

	while (!readFile.eof())
	//while(getline(readFile,str))
	{
		getline(readFile,str);
// 
// 		remove(str.begin(),str.end(),' ');//不考虑每行的空格 制表符  \n
// 		remove(str.begin(), str.end(), '\t');

		if (str==""||(str[0]=='/'))
		{
			continue;
		}

			stringstream temp_str(str);

			
			while (temp_str>>word)
			{
				cout<<word<<endl;
				++row;
		                  				
			}
			
			++line;
			cout<<"第"<<line<<"行有"<<row<<"列"<<endl;

			cout<<str<<endl;

			row=0;

		
	}
           cout<<line<<endl;

	return 0;
}


下面是txt文件保存在vector<vector<float> >里:



#include <iostream>

#include <string>

#include <sstream>

#include <fstream>

#include <vector>
#include <algorithm>
using namespace std;

template <class T> 
void convertFromString(T &value, const std::string &s) {
	std::stringstream ss(s);
	ss >> value;
}

int main()
{
	vector<vector<float> >  vec;
	//string FileName="test.txt";

//	istream  readFile(FileName);
	ifstream  readFile("test.txt");

	//int line=0;
	string str,word;
	//int row=0;

	while (!readFile.eof())
	//while(getline(readFile,str))
	{
		getline(readFile,str);
// 
// 		remove(str.begin(),str.end(),' ');//不考虑每行的空格 制表符  \n
// 		remove(str.begin(), str.end(), '\t');

		if (str==""||(str[0]=='/'))
		{
			continue;
		}

			stringstream temp_str(str);

			vector<float>  temp_vec;

			while (temp_str>>word)
			{
				//cout<<word<<endl;
			//	++row;
				float temp;
                convertFromString(temp,word);
   				temp_vec.push_back(temp);

			}
			vec.push_back(temp_vec);

			//++line;
			//cout<<"第"<<line<<"行有"<<row<<"列"<<endl;

			//cout<<str<<endl;

			//row=0;
		
	}
	//cout<<line<<endl;
	for(size_t iter=0;iter!=vec.size();++iter)
    {
       for (size_t i=0;i!=(vec[iter]).size();++i)
       {
		   cout<<(vec[iter])[i]<<" ";
       }
	   cout<<endl;
    }
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: