再談C++逐行讀取文字檔案
要說使用C++逐行讀取文字檔案(通常為.txt檔案),最為常見的寫法是這樣的:
std::string strLine;
while(getline(file,strLine))
{
……
}
這裡忽略了一個重要的因素,那就是文字的編碼方式。
開啟windows自帶的記事本程式,留意觀察“儲存”對話方塊,其右下角提供了文字編碼選擇下拉列表,除了大家熟知的ANSI和UNICODE編碼,還有可以說最為常用的UTF-8編碼。
很顯然,如果讀取的文字檔案並非ANSI編碼,那麼上述程式碼恐怕就無法如你所願了。
因此,應當首先對文字編碼進行判斷,然後採取不同的處理辦法,這才是穩妥的解決思路。
根據文字檔案的頭兩個位元組,我們可以做如下的判斷:
- 0xBBEF:UTF-8
- 0xFEFF:UNICODE
- 0xFFFE:UNICODE Big-Endian
- 如果都不是,那麼ANSI
接下來,我們可以使用ifstream的getline來逐行讀取了,原因很簡單,可以指定行結束標識,對於UNICODE編碼來說,是0x000A
回到開始的程式碼,為了保持程式碼結構不變,可以用自定義的getline(比如叫GetLine)來替換string::getline。
相關推薦
再談C++逐行讀取文字檔案
要說使用C++逐行讀取文字檔案(通常為.txt檔案),最為常見的寫法是這樣的:std::string strLine; while(getline(file,strLine)) { …… }這裡忽略了一個重要的因素,那就是文字的編碼方式。開啟windows自帶的記
C++ 逐行讀取文字檔案
#include <fstream>// std::ifstream #include <iostream>// std::wcout #include <vect
如何利用C/C++逐行讀取txt檔案中的字串(可以順便實現文字檔案的複製)
本文程式碼都在Windows/VC++6.0下測試過, 在linux/g++下也沒有問題。 但是請一定注意linux和Windows檔案格式的區別,比如: 1. 當linux上的程式碼讀取Windows檔案格式時, 讀取結果的每行
c++/逐行讀取txt檔案
#include <fstream> #include <string> #include <iostream> using namespace std; int main() { ifstream in("1.txt
c++逐行讀取txt檔案 getline()
#include#include#includeusing namespace std;int main(){ifstream fin;fin.open("word.txt");string str;while (!fin.eof()){getline(fin, str);
C++檔案讀寫操作(二)逐字元讀取文字和逐行讀取文字
相關文章 #include <iostream> #include <fstream> using namespace std; void testByChar() { fstream testByCharFile;
VC6.0逐行讀取記錄檔案文字檔案CStdioFile
void CLogfile_analysisDlg::OnReadfile() { m_Grid.DeleteAllItems(); CString strText = ""; CString sz
c++逐行讀取寫入txt檔案的方法
檔案開啟模式: ios::in 讀 ios::out 寫 ios::app 從檔案末尾開始寫 ios::binary 二進位制模式 ios::nocreate 開啟一個檔案時,如果檔案不存在,不建立檔案。 ios::n
最簡單逐行讀取hdfs檔案
val arrayRdd = spark.sparkContext.textFile("/dmLink/domain/").collect() for(myDomain <- arrayRdd){ println("*********************************" +
python_csv_逐行讀取csv檔案並按行存入列表
# -*- coding=utf-8 -*- import csv #載入csv包便於讀取csv檔案 csv_file=open('D:/scores.csv') #開啟csv檔案 csv_reader_lines = csv.reader(csv_file)
逐行讀取txt檔案並存入到陣列中
get_file_contents_on_line.php $file = fopen("log.txt", "r"); $user=array(); $i=0; //輸出文字中所有的行,直到檔案結束為止。 while(! feof
【Shell指令碼】逐行處理文字檔案 && 空格變換行
經常會對文體檔案進行逐行處理,在Shell裡面如何獲取每行資料,然後處理該行資料,最後讀取下一行資料,迴圈處理.有多種解決方法如下: 1.通過read命令完成. read命令接收標準輸入,或其他檔案描述符的輸入,得到輸入後,read命令將資料放入一個標準變數中. 利用read讀取檔案時,每次呼叫read命令
Python 按行讀取文字檔案 快取 和 非快取實現
需求 最近專案中有個讀取檔案的需求,資料量還挺大,10萬行的數量級。 java 使用快取讀取檔案是,會相應的建立一個內部緩衝區陣列在java虛擬機器記憶體中,因此每次處理的就是這一整塊記憶體。 簡單的想:就是如果不用快取,每次都要硬碟–虛擬機器快取–讀取;
shell學習之逐行讀取文字
#!/bin/bash daemonFilename="test.sh" fileName="/home/work/local/liumengting/setDaemon.cfg" while read line do parameterName=`echo $line | awk -F "=
MFC逐行讀取txt檔案內容
程式碼如下: CString strFileName = _T("D:\\abc.txt"); if (!PathFileExists(strFileName)) { return FALS
VBA練習——逐行讀取csv檔案
Sub qry_Click() Dim currentFileDirectory currentFileDirectory = Application.ActiveWorkbook.Path Dim queryDataRowCnt As Integer '獲取
UNICODE環境下整行讀取文字檔案的方法
因為要逐行處理GB18030文字檔案,必須用UNICODE編碼。但在用ReadString讀取時總出錯,網上找了程式碼,但只能讀出前面5行,還有在文字比較上也不方便,因文字串末尾的回車符。琢磨了兩天終於完全搞定。下面是有關的程式碼,注意紅色部分。 ......... fil
shell程式之逐行讀取一檔案中的引數且使用此引數每次執行5分鐘
/********************************************************************* * Author : Samson * Date : 04/18/2014 * Test platform: *
JAVA逐行讀取指定檔案中的內容,每行中的不同內容用任意個空格分開。
檔案中的內容格式為(中間可以用任意個空格隔開):1 張三 品德優良a JACK SMArtpackage ReadFileLine;/*Readline類儲存檔案中每行中不同模組的資訊,並以類似指標的方式儲存每一行*/p
Java按行讀取文字檔案
上年紀了,記性差了,寫在這裡別忘了 FileReader reader = new FileReader("D://lbhdev//feisanWeb//src//265_url.txt"); BufferedReader br = new BufferedReader(