c++中讀取文本文件單行數據的正確做法

網絡上大部分讀取文本文件中單行數據的做法如下,

ifstream inFile;//(sFileName.c_str(),std::ios::in);

inFile.open(sFileName.c_str(),ios::in|ios::binary);
if (inFile.fail())
{
fprintf(stderr,"file %s open error!\n",sFileName.c_str());
return false;
}
do 
{
std::string sLine;
std::getline(inFile,sLine);
fprintf(stdout,"%s\n",sLine.c_str());

} while (!inFile.eof());

在vs2005中這段代碼對路徑中包含中文的文件總是inFile.fail()返回,需要在程序運行的時候加上

setlocale(LC_ALL,"Chinese-simplified");

更直接的做法是使用c語言的fgets,讀取文件中單行遇到\n的時候返回

FILE *fp = fopen("main.cpp","rb");
if (NULL != fp)
{
char szLine[256] = {0}; //一行數據
while(fgets(szLine,256,fp)) //最大讀取256字節,但是遇到\n時候fgets返回,這是szLine中保存的正好是一行的數據
{
cout << szLine <<endl;
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章