日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

完形填空生成器 1-1 打开文本框与提取文本字符

發布時間:2023/12/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 完形填空生成器 1-1 打开文本框与提取文本字符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間聽到補習的英語老師講完形填空,說每個年級的完形題的選項都是固定的,是有規律可循的,于是就萌生出一個大膽的想法。

但是

? ? ? 這個項目需要讀取文件信息的能力。

? ? ? 讀取信息到不是什么難事,fstream輕輕松松搞定。

bool F(Article a,int Acode) {//傳入一個文章對象和文章的序號char dataL[1000],newW[20];//前一個是存放文件地址,另一個存放提取后的單詞memset(dataL, '\0', 1000);//初始化數組,有點重要if (!fingTheFile(dataL))return false;//彈出打開文件窗口并將地址寫入數組中printf(" -您已經選擇了路徑為 %s 的文件正在進行讀入", dataL);ifstream infile;infile.open(dataL, ios::in); int wnum = 0;//以只讀的方法打開文件printf("\n -讀入完成!以下是英語原文:\n ");while (infile >> newW) { //讀入單詞a.word[wnum] = newW;printf("%s ",a.word[wnum++]);}a.wordNum = wnum;a.newTime = getTime();a.code = Acode;//讀入其他信息printf("\n -該文章共有 %d 個單詞,于 %s 完成錄入在 %d 號文章中,請為該文章命名(10個字符,中英文皆可):", a.wordNum,a.code, a.newTime);scanf("%s", a.title);infile.close();//O了,一定要關閉文檔return true; }

可找到地址就不那么簡單了,谷歌度娘走一波后抄找到了需要的東西:

bool fingTheFile(char str[]) {char szFile[1000];OPENFILENAME ofn;ZeroMemory(&ofn, sizeof(ofn));ofn.lStructSize = sizeof(ofn);ofn.hwndOwner = NULL;ofn.lpstrFile = (LPWSTR)szFile;ofn.lpstrFile[0] = '\0';ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = L"txt\0*.*\0Text\0*.TXT\0";ofn.nFilterIndex = 1;ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;if (GetOpenFileName(&ofn)){ConvertLPWSTRToLPSTR(ofn.lpstrFile, str);return true;}else{return false;} }//年代久遠,好像也是從csdn摸來的,有見過的老哥麻煩提醒一下哈

至此,就獲得了一個寬字符的地址...

寬字符...

這就很尷尬了,普通的printf輸出不了,得用帶w的,可fstream就不干了,(最重要的是我不會...)

所以我們還需要一個中轉函數

char* ConvertLPWSTRToLPSTR(LPWSTR lpwszStrIn,char str[]) {LPSTR pszOut = NULL;try{if (lpwszStrIn != NULL){int nInputStrLen = wcslen(lpwszStrIn);// Double NULL Termination int nOutputStrLen = WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;pszOut = new char[nOutputStrLen];if (pszOut){memset(pszOut, 0x00, nOutputStrLen);WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);}}}catch(std::exception e){}memcpy(str,pszOut,strlen(pszOut));return pszOut; }

到這里,一個完整的提取函數就ok了~

最后亂胡一下頭文件,

  • #include <cstdio>
  • #include <tchar.h>
  • #include <fstream>
  • #include <cstring>
  • #include <ctime>
  • #include <windows.h>
  • #include <iostream>
  • #include <commdlg.h>
  • #include <cstdlib>
  • #include <exception>
  • #include <atltime.h>
    ?

齊活~

總結

以上是生活随笔為你收集整理的完形填空生成器 1-1 打开文本框与提取文本字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。