網絡上大部分讀取文本文件中單行數據的做法如下,
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;
}
}