網站首頁 編程語言 正文
首先,要準備好words.txt(英文文章)置于工程目錄下
思路:
1.打開文件
2.讀取每一行
3.找到特殊的標點符號的位置,進行刪除。
4.根據空格截取單詞 find(" ");
5.將拿到的每一個單詞放在鏈表中
一:讀取一行,去除該行標點符號
#include<iostream>
using namespace std;
#include<fstream>
#include<string>
#include<list>
void test_word_split();
int main()
{
test_word_split();
return 0;
}
void test_word_split()
{
fstream fs;
char filename[20] = {0};
cout<<"請輸入打開的文件名:";
cin>>filename;
//打開文件
fs.open(filename);
cout<<"打開成功"<<filename<<endl;
char buf[1024] = {0};
fs.getline(buf,1024);//讀取每一行
cout<<buf<<endl;
size_t pos; //找到位置
string line; //接替buf職責
line = buf;
pos = line.find_first_of(",.;:'?!()/\""); //找特殊的標點符號
while(pos!=string::npos)
{ //刪除單個字符
line.erase(pos,1);
//再找下一個單個的字符
pos = line.find_first_of(",.;:'?!()/\"");
}
cout<<line.c_str()<<endl; //string 轉char
}
二:截取單詞
#include<iostream>
using namespace std;
#include<fstream>
#include<string>
#include<list>
void test_word_split();
int main()
{
test_word_split();
return 0;
}
void test_word_split()
{
fstream fs;
char filename[20] = {0};
cout<<"請輸入打開的文件名:";
cin>>filename;
//打開文件
fs.open(filename);
cout<<"打開成功"<<filename<<endl;
char buf[1024] = {0};
fs.getline(buf,1024);//讀取每一行
cout<<buf<<endl;
size_t pos;
string line,word;
line = buf;
pos = line.find_first_of(",.;:'?!()/\""); //找特殊的標點符號
while(pos!=string::npos)
{ //刪除單個字符
line.erase(pos,1); //從什么位置開始刪除多長的字符
//再找下一個單個的字符
pos = line.find_first_of(",.;:'?!()/\"");
}
cout<<line.c_str()<<endl; //string 轉char
//根據空格截取單詞 find("") 111 222 333
pos = line.find(" ");
while(pos!=string::npos)
{
//截取單詞
word = line.substr(0,pos);//從0開始,一直截到空格所在位置
cout<<word<<endl;
//把第一個單詞以及空格刪除
line.erase(0,pos+1); //從什么位置開始刪除多長的字符(如刪111 )因此pos+1
pos = line.find(" "); //尋找下一個空格
}
}
三:將拿到的每一個單詞都放在鏈表中
#include<iostream>
using namespace std;
#include<fstream>
#include<string>
#include<list>
void test_word_split();
int main()
{
test_word_split();
return 0;
}
void test_word_split()
{
list<string> wordList;//鏈表
fstream fs;
char filename[20] = {0};
cout<<"請輸入打開的文件名:";
cin>>filename;
fs.open(filename);
cout<<"打開成功"<<filename<<endl;
char buf[1024] = {0};
string line,word; //初始化定義
while(fs.getline(buf, 1024))//讀取每一行
{
size_t pos; //找到位置
line = buf; //接替buf職責
pos = line.find_first_of(",.;:'?!()/\"");
while(pos!=string::npos)//!=npos就找到
{
line.erase(pos,1); //從什么位置開始刪除多長字符
pos = line.find_first_of(",.;:'?!()/\"");//尋找下一個標點符號
}
pos = line.find(" "); //尋找空格所在位置
while(pos!=string::npos)
{
word = line.substr(0,pos);//從0開始,一直截到空格所在位置
wordList.push_back(word); //拿到的單詞放在鏈表中
//把第一個單詞以及空格刪除
line.erase(0, pos+1);//從什么位置開始刪除多長的字符(如刪111 )因此pos+1
pos = line.find(" ");//尋找下一個空格
}
}
cout<<"驗證一下"<<endl;
list<string>::iterator it;
for(it = wordList.begin();it!=wordList.end();it++)
{
cout<<(*it).c_str()<<endl;
}
cout<<"總的個數:"<<wordList.size();
fs.close();
}
最后的結果:
原文鏈接:https://blog.csdn.net/m0_56051805/article/details/124395841
相關推薦
- 2022-04-11 Matplotlib直方圖繪制中的參數bins和rwidth的實現_python
- 2023-01-18 Android事件與手勢操作詳解_Android
- 2022-09-18 iOS開發底層探索界面優化示例詳解_IOS
- 2022-09-05 Pycharm虛擬環境pip時報錯:no?suchoption:--bulid-dir的解決辦法_p
- 2022-09-22 解決ubuntu18.04 磁盤空間不足
- 2022-08-16 python可視化分析繪制散點圖和邊界氣泡圖_python
- 2022-07-10 如何讓css文本元素居中
- 2022-07-16 【Maven】多模塊構建項目的維護
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支