20200417_將一組數據排序後輸出到文件3

20200417_將一組數據排序後輸出到文件3

每日小知識

Micorosoft Edge Dev,又名chrome內核的Edge,比原版edge好用,相比於google chrome,可以不用科學上網就能雲收藏。

一、相關術語

本文牽扯到字符串處理,將字符串轉爲數組。

  • stringstream
    這是今天的重點內容,利用stringstream解析用空格分隔的數據(同理,可以解析其他符號分割的數據)。

  • C++版本
    這裏使用用近年來流行的C++11。

二、筆試題(接之前的內容)

1、將文件中的一組數字排序後輸出到另一文件中去。
答:首先假設輸入文件爲【input_file.txt】,裏面內容爲一組整型數字【1 38 3 9 1】。輸出文件名爲【output_file.txt】。統一保存路徑爲【D:\】。程序名爲【sort_file.cpp】

第一步:實現排序算法(見前面文章)

void BubbleSort(vector<int>& data);

第二步:讀出文件內容,並解析數據,存入vector中。

//讀取數據,解析,存入vector
bool ReadDataFile(std::vector<int>& _outData)
{
	_outData.clear();
	const char szFile[] = "input_file.txt";	//文件名
	//ifsteam
	bool bRet = true;
	std::ifstream ioRead;
	const int kBUFSIZE = 20;
	char szBUF[kBUFSIZE] = { 0 };

	ioRead.open(szFile);	//文件不存在ioRead爲空
	if (ioRead)
	{
		bRet = true;
		//	ioRead >> szBUF;讀取一個字節
		ioRead.getline(szBUF, sizeof(szBUF));	//讀取一行。

		std::stringstream ss(szBUF);	//解析空格分開的數據,用stringstream
		std::string strTmp;

		const char kSEPARATOR = ' ';	//分隔符,這裏指【空格】
		while (getline(ss, strTmp, kSEPARATOR))
		{
			_outData.push_back( stoi(strTmp) );
		}
	}
	else
	{
		bRet = false;
	}
	char cTest = 'a';	//斷點測試
	return bRet;
}

注:stingstream與getline是核心。

本文歸類

建議歸類到【C++】。

明日計劃

標題:將一組數據排序後輸出到文件4
小知識:使用判空的方式而沒有使用try…catch的原因。
1、將排序後的數據寫入文件。

參考文獻:

《C++筆試面試寶典2011版.docx》
《C++ Prime Plus》(第6版),第768頁,17.4文件的輸入和輸出。

C++讀取和解析逗號分隔數據
https://blog.csdn.net/techfield/article/details/77855620

今日收藏:

stringstream官方說明
http://www.cplusplus.com/reference/sstream/stringstream/stringstream/

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