1. cin遇到空格,回車就會結束,如果輸入中有空格,使用
string input;
getline(cin, input, '\n'); //fflush(stdin); 如果不阻塞 //vs2019(C++ 11之後)使用rewind(stdin); 代替
如果要能夠接受換行,如下: 使用ctrl + z結束輸入(windows下ctrl+z,然後回車確定)
string strPerLine;
while(getline(cin, strPerLine))
{
justify.m_vecSrcLine.push_back(strPerLine);
}
2文件操作的各種方法
fin.peek() != EOF 多讀一行 空行,是因爲文件的末尾有一個換行符
在保存文件的時候,如果是最後一條記錄,則不要寫入換行,否則讀取的時候,就會多一個空行
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
bool CClass::LoadData(){
try{
std::ifstream infile("student.txt");
infile >> m_iStuNum;
for(int i=0;i < m_iStuNum;i++)
{
infile>>pArrStudent[i]->m_szIdNo;
infile>>pArrStudent[i]->m_szName;
infile>>pArrStudent[i]->m_szAddr;
infile>>pArrStudent[i]->m_szTel;
infile>>pArrStudent[i]->m_iStudNo;
infile>>pArrStudent[i]->m_iMath;
infile>>pArrStudent[i]->m_iEnglish;
}
infile.close();
}
catch(...){
}
return true;
}
bool CClass::SaveData(){
std::ofstream outfile("student.txt");
outfile << m_iStuNum << std::endl;
for(int i=0;i<m_iStuNum;i++)
{
outfile<<pArrStudent[i]->m_szIdNo<<"\t"<<
pArrStudent[i]->m_szName<<"\t"<<
pArrStudent[i]->m_szAddr<<"\t"<<
pArrStudent[i]->m_szTel<<"\t"<<
pArrStudent[i]->m_iStudNo<<"\t"<<
pArrStudent[i]->m_iMath<<"\t"<<
pArrStudent[i]->m_iEnglish<<std::endl;
}
outfile.close();
return true;
}
類型轉換
template <class Type>
Type StringToNum(const string& str)
{
istringstream iss(str);
Type num;
iss >> num;
return num;
}
template <class Type>
string NumToString(Type t)
{
ostringstream iss;
iss << t;
return iss.str();
}
逐行讀取文件,判斷文件結束
ifstream dataFile;
dataFile.open(strDataFile.c_str(), ios::in | ios::binary);
while (!dataFile.eof()) {
getline(dataFile, strPerLine);
}
獲取文件夾下的所有文件名
#include<io.h>
bool GetFiles( string path, vector<string>& files )
{
long hFile = 0;
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
{
do
{
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
GetFiles( p.assign(path).append("\\").append(fileinfo.name), files );
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
return true;
}