tmp
This commit is contained in:
parent
a6ed09e850
commit
93604a89ae
@ -34,6 +34,8 @@ gctl::text_content::text_content()
|
|||||||
tag_sym_ = '!';
|
tag_sym_ = '!';
|
||||||
deli_sym_ = ' ';
|
deli_sym_ = ' ';
|
||||||
head_num_ = 0;
|
head_num_ = 0;
|
||||||
|
row_num_ = 0;
|
||||||
|
col_num_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gctl::text_content::~text_content()
|
gctl::text_content::~text_content()
|
||||||
@ -41,15 +43,17 @@ gctl::text_content::~text_content()
|
|||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
gctl::text_content::text_content(std::string filename, std::string file_exten, bool unpack)
|
gctl::text_content::text_content(std::string filename, std::string file_exten)
|
||||||
{
|
{
|
||||||
// 设置基础参数
|
// 设置基础参数
|
||||||
att_sym_ = '#';
|
att_sym_ = '#';
|
||||||
tag_sym_ = '!';
|
tag_sym_ = '!';
|
||||||
deli_sym_ = ' ';
|
deli_sym_ = ' ';
|
||||||
head_num_ = 0;
|
head_num_ = 0;
|
||||||
|
row_num_ = 0;
|
||||||
|
col_num_ = 0;
|
||||||
// 载入文本内容
|
// 载入文本内容
|
||||||
load_text(filename, file_exten, unpack);
|
load_text(filename, file_exten);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gctl::text_content::set(char deli_sym, int h_num, char att_sym, char tag_sym)
|
void gctl::text_content::set(char deli_sym, int h_num, char att_sym, char tag_sym)
|
||||||
@ -71,7 +75,7 @@ void gctl::text_content::clear()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gctl::text_content::load_text(std::string filename, std::string file_exten, bool unpack)
|
void gctl::text_content::load_text(std::string filename, std::string file_exten)
|
||||||
{
|
{
|
||||||
std::ifstream infile;
|
std::ifstream infile;
|
||||||
open_infile(infile, filename, file_exten);
|
open_infile(infile, filename, file_exten);
|
||||||
@ -108,30 +112,42 @@ void gctl::text_content::load_text(std::string filename, std::string file_exten,
|
|||||||
}
|
}
|
||||||
else lines_.push_back(tmp_line);
|
else lines_.push_back(tmp_line);
|
||||||
}
|
}
|
||||||
|
|
||||||
infile.close();
|
infile.close();
|
||||||
|
|
||||||
if (unpack)
|
row_num_ = lines_.size();
|
||||||
{
|
table_.resize(row_num_);
|
||||||
table_.resize(lines_.size());
|
|
||||||
|
|
||||||
|
int cn;
|
||||||
std::vector<std::string> tmp_cols;
|
std::vector<std::string> tmp_cols;
|
||||||
for (size_t i = 0; i < lines_.size(); i++)
|
for (size_t i = 0; i < row_num_; i++)
|
||||||
{
|
{
|
||||||
tmp_cols.clear();
|
tmp_cols.clear();
|
||||||
parse_string_to_vector(lines_[i], deli_sym_, tmp_cols);
|
parse_string_to_vector(lines_[i], deli_sym_, tmp_cols);
|
||||||
|
|
||||||
|
cn = tmp_cols.size();
|
||||||
|
col_num_ = std::max(cn, col_num_);
|
||||||
|
|
||||||
table_[i].resize(tmp_cols.size());
|
table_[i].resize(tmp_cols.size());
|
||||||
for (size_t j = 0; j < tmp_cols.size(); j++)
|
for (size_t j = 0; j < tmp_cols.size(); j++)
|
||||||
{
|
{
|
||||||
table_[i][j].str_ = tmp_cols[j];
|
table_[i][j].str_ = tmp_cols[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cell_content empty_cell;
|
||||||
|
empty_cell.str_ = "";
|
||||||
|
for (size_t i = 0; i < row_num_; i++)
|
||||||
|
{
|
||||||
|
cn = table_[i].size();
|
||||||
|
for (size_t j = cn; j < col_num_; j++)
|
||||||
|
{
|
||||||
|
table_[i].push_back(empty_cell);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gctl::text_content::save_text(std::string filename, std::string file_exten, bool packed)
|
void gctl::text_content::save_text(std::string filename, std::string file_exten)
|
||||||
{
|
{
|
||||||
std::ofstream outfile;
|
std::ofstream outfile;
|
||||||
open_outfile(outfile, filename, file_exten);
|
open_outfile(outfile, filename, file_exten);
|
||||||
@ -151,26 +167,36 @@ void gctl::text_content::save_text(std::string filename, std::string file_exten,
|
|||||||
outfile << "# " << annotates_[i] << std::endl;
|
outfile << "# " << annotates_[i] << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packed)
|
for (int i = 0; i < row_num_; i++)
|
||||||
{
|
|
||||||
for (int i = 0; i < lines_.size(); i++)
|
|
||||||
{
|
|
||||||
outfile << lines_[i] << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < table_.size(); i++)
|
|
||||||
{
|
{
|
||||||
outfile << table_[i][0].str_;
|
outfile << table_[i][0].str_;
|
||||||
for (size_t j = 1; j < table_[i].size(); j++)
|
for (size_t j = 1; j < col_num_; j++)
|
||||||
{
|
{
|
||||||
outfile << deli_sym_ << table_[i][j].str_;
|
outfile << deli_sym_ << table_[i][j].str_;
|
||||||
}
|
}
|
||||||
outfile << std::endl;
|
outfile << std::endl;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gctl::text_content::init_table(int row, int col)
|
||||||
|
{
|
||||||
|
row_num_ = row;
|
||||||
|
col_num_ = col;
|
||||||
|
|
||||||
|
lines_.resize(row_num_);
|
||||||
|
table_.resize(row_num_);
|
||||||
|
for (size_t i = 0; i < row_num_; i++)
|
||||||
|
{
|
||||||
|
lines_[i] = "";
|
||||||
|
|
||||||
|
table_[i].resize(col_num_);
|
||||||
|
for (size_t j = 0; j < col_num_; j++)
|
||||||
|
{
|
||||||
|
table_[i][j].str_ = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
@ -53,8 +53,8 @@ namespace gctl
|
|||||||
|
|
||||||
struct text_content
|
struct text_content
|
||||||
{
|
{
|
||||||
// 头信息行数
|
// 头信息行数 表格行数 表格列数
|
||||||
int head_num_;
|
int head_num_, row_num_, col_num_;
|
||||||
// 注释行起始符 标记行起始符 分割符
|
// 注释行起始符 标记行起始符 分割符
|
||||||
char att_sym_, tag_sym_, deli_sym_;
|
char att_sym_, tag_sym_, deli_sym_;
|
||||||
// 头信息行 注释行 标记行
|
// 头信息行 注释行 标记行
|
||||||
@ -80,9 +80,8 @@ namespace gctl
|
|||||||
*
|
*
|
||||||
* @param filename 文件名
|
* @param filename 文件名
|
||||||
* @param file_exten 文件扩展名
|
* @param file_exten 文件扩展名
|
||||||
* @param unpack 将文件行内容按分隔符拆散,保存至table_
|
|
||||||
*/
|
*/
|
||||||
text_content(std::string filename, std::string file_exten = ".txt", bool unpack = false);
|
text_content(std::string filename, std::string file_exten = ".txt");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 设置文件对象
|
* @brief 设置文件对象
|
||||||
@ -105,19 +104,31 @@ namespace gctl
|
|||||||
*
|
*
|
||||||
* @param filename 文件名
|
* @param filename 文件名
|
||||||
* @param file_exten 文件扩展名
|
* @param file_exten 文件扩展名
|
||||||
* @param unpack 将文件行内容按分隔符拆散,保存至table_
|
|
||||||
*/
|
*/
|
||||||
void load_text(std::string filename, std::string file_exten = ".txt", bool unpack = false);
|
void load_text(std::string filename, std::string file_exten = ".txt");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 将内容写入文件文件
|
* @brief 将内容写入文件文件
|
||||||
*
|
*
|
||||||
* @param filename 文件名
|
* @param filename 文件名
|
||||||
* @param file_exten 文件扩展名
|
* @param file_exten 文件扩展名
|
||||||
* @param packed 为真使用lines_写入文件,为假则使用tabl_写入文件
|
|
||||||
*/
|
*/
|
||||||
void save_text(std::string filename, std::string file_exten = ".txt", bool packed = true);
|
void save_text(std::string filename, std::string file_exten = ".txt");
|
||||||
|
|
||||||
|
void init_table(int row, int col);
|
||||||
|
|
||||||
|
template <typename T> void fill_column(int idx, const array<T> &data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void text_content::fill_column<T>(int idx, const array<T> &data)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < row_num_; i++)
|
||||||
|
{
|
||||||
|
table_[i][idx].value(data[i]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //_GCTL_TEXT_IO2_H
|
#endif //_GCTL_TEXT_IO2_H
|
Loading…
Reference in New Issue
Block a user