Cpp讀寫文件、CString轉String、String轉CString
阿新 • • 發佈:2019-01-16
UNC empty quest .html cto EDA stdstring log mfcc
場景
C++讀取文件
技術點
讀取文件
fstream提供了三個類,用來實現c++對文件的操作。(文件的創建、讀、寫)。
ifstream -- 從已有的文件讀入
ofstream -- 向文件寫內容
fstream - 打開文件供讀寫
文件打開模式:
ios::in 只讀 ios::out 只寫 ios::app 從文件末尾開始寫,防止丟失文件中原來就有的內容 ios::binary 二進制模式 ios::nocreate 打開一個文件時,如果文件不存在,不創建文件 ios::noreplace 打開一個文件時,如果文件不存在,創建該文件 ios::trunc 打開一個文件,然後清空內容 ios::ate 打開一個文件時,將位置移動到文件尾
文件指針位置在c++中的用法:
ios::beg 文件頭
ios::end 文件尾
ios::cur 當前位置
例子:
移動的是字節,不是行。
file.seekg(0,ios::beg); //讓文件指針定位到文件開頭 file.seekg(0,ios::end); //讓文件指針定位到文件末尾 file.seekg(10,ios::cur); //讓文件指針從當前位置向文件末方向移動10個字節 file.seekg(-10,ios::cur); //讓文件指針從當前位置向文件開始方向移動10個字節 file.seekg(10,ios::beg); //讓文件指針定位到離文件開頭10個字節的位置
常用的錯誤判斷方法:
good() 如果文件打開成功
bad() 打開文件時發生錯誤
eof() 到達文件尾
按行讀取文件
const int bufsize = 512;
wchar_t strbuf[bufsize];
//
while (!file_.eof())
{
file_.getline(strbuf, bufsize);
}
String轉CString
c_str()函數返回一個指向正規c字符串的指針,內容和string類的本身對象是一樣的,通過string類的c_str()函數能夠把string對象轉換成c中的字符串的樣式
CString strMfc; std::string strStl=“test“; strMfc=strStl.c_str();
CString轉String
CString到std::string:
CString cs("Hello");
std::string s((LPCTSTR)cs);
由於std::string只能從LPSTR/ 構造LPCSTR,使用VC ++ 7.x或更高版本的程序員可以使用轉換類,例如作為CT2CA中介。
CString cs ("Hello");
// Convert a TCHAR string to a LPCSTR
CT2CA pszConvertedAnsiString (cs);
// construct a std::string using the LPCSTR input
std::string strStd (pszConvertedAnsiString);
代碼
按行讀取文本文件
- 使用方式
vector<wstring> vecResult; // 文件讀取的結果
wstring filename; // 文件路徑
Cpp_read_file(vecResult, filename);
- MFC
int CMFCClistDlg::Cpp_read_file(vector<string> &result, string szFile)
{
//清空原始值
result.clear();
ifstream file_(szFile.c_str(), std::ios::in);
const int bufsize = 512;
char strbuf[bufsize];
// 讀到文件末尾
while (!file_.eof())
{
file_.getline(strbuf, bufsize);
string sentence = strbuf;
if (sentence.empty())
{
continue;
}
result.push_back(sentence);
}
file_.close();
//如果結果值為空,返回-1
if(result.size()<1)
{
return -1;
}
return 0;
}
參考
C++讀寫TXT文件中的string或者int型數據以及string流的用法
https://www.cnblogs.com/1242118789lr/p/6885691.html
如何將CString和:: std :: string :: std :: wstring互相轉換?
https://stackoverflow.com/questions/258050/how-to-convert-cstring-and-stdstring-stdwstring-to-each-other
Cpp讀寫文件、CString轉String、String轉CString