【C++】编程实现计算英文文献的行数与单词数

要求

编写一程序,统计一篇英文文章中单词的个数与行数。

代码

#include <iostream>
#include "fstream"
using namespace std;

#define FILEPATH "test.txt"

//文章信息结构体
struct TextInfo 
{
	int num_of_words;
	int num_of_lines;
};

//判断是否为英文单词,word里面what's 代表一个单词
bool isEnglishWords(char c)
{
	return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '\'');
}

//编写一程序,统计一篇英文文章中单词的个数与行数。
TextInfo compteWordsAndLines()
{
	TextInfo ti;
	ti.num_of_lines = 0;
	ti.num_of_words = 0;
	//单词的个数,有空格就算一个单词
	//首先以只读的形式打开文章
	ifstream fin;
	fin.open(FILEPATH);
	if (fin.fail())
	{
		cout << "empty file 1" << endl;
		fin.close();
	}

	char buf[1024] = {};
	int lines = 0;
	int words = 0;
	bool inword = false;
	int i = 0;
	while (!fin.eof()) 
	{
		fin.getline(buf, 999);
		lines++;
		i = 0;
		inword = false;
		while (buf[i] != 0) //不为行尾
		{
			if (!isEnglishWords(buf[i]))
				inword = false;
 			else if (isEnglishWords(buf[i]) && inword == false) {
				words++;
				inword = true;
			}
			i++;
		}
	}

	ti.num_of_lines = lines;
	ti.num_of_words = words;

	fin.close();
	return ti;
}
int main()
{
	TextInfo myti = compteWordsAndLines();
	cout << myti.num_of_lines << endl;
	cout << myti.num_of_words << endl;

	cout << "hello world!" << endl;
	system("pause");
	return 0;
}

关于文件读写

需要熟练掌握文件读写的函数,看到这篇文章一次,就回顾一次吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用QStandardItemModel实现动态增加删除数与列数的C++代码示例,不预先设置数与列数: ```c++ #include <QStandardItemModel> // 创建QStandardItemModel对象 QStandardItemModel* model = new QStandardItemModel(this); // 设置表头 model->setHorizontalHeaderLabels(QStringList() << "Column1" << "Column2"); // 动态增加 model->insertRow(0); QStandardItem* item1 = new QStandardItem("Item1"); QStandardItem* item2 = new QStandardItem("Item2"); model->setItem(0, 0, item1); model->setItem(0, 1, item2); // 动态增加 model->insertRow(1); QStandardItem* item3 = new QStandardItem("Item3"); QStandardItem* item4 = new QStandardItem("Item4"); model->setItem(1, 0, item3); model->setItem(1, 1, item4); // 动态增加列 model->insertColumn(2); QStandardItem* item5 = new QStandardItem("Item5"); QStandardItem* item6 = new QStandardItem("Item6"); model->setItem(0, 2, item5); model->setItem(1, 2, item6); // 动态删除 model->removeRow(1); // 动态删除列 model->removeColumn(2); // 释放QStandardItemModel对象 delete model; ``` 在上面的代码中,我们创建了一个QStandardItemModel对象,并设置了表头。然后,我们使用insertRow()方法动态增加了两,并使用setItem()方法设置单元格内容。接着,我们使用insertColumn()方法动态增加了一列,并使用setItem()方法设置单元格内容。然后,我们使用removeRow()方法动态删除了一。最后,我们使用removeColumn()方法动态删除了一列。最后,我们释放了QStandardItemModel对象。 希望这个示例能帮助您理解如何使用QStandardItemModel实现动态增加删除数与列数,即使不预先设置数与列数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值