有一些問題,我記住了,並會嘗試問這裏..C++關於ifstream.ignore()
下面是一個運算符重載
ifstream& operator>>(ifstream &input, Map2D &map2d)
{
int x1,x2,y1,y2;
//get x1 first
input.ignore(2);
input>>x1;
//get y1
input.ignore();
input>>y1;
//get x2
input.ignore(4);
input>>x2;
//get y2
input.ignore();
input>>y2;
input.ignore();
}
這是我的文本文件
Map2D, [5, 7], [3, 8]
我記住的問題是,x2因爲我的分隔符是逗號,爲什麼x2是忽略(4)而不忽略(2),我嘗試忽略(2),並且數字搞砸了。但是忽略(4)是正確的1
爲什麼是(4)即使世界只有白色空間和[
x2 refer to value 3
謝謝!用於說明
我仍然看到它。祈禱告訴你,爲什麼你使用硬編碼的數字,而不是使用'input.ignore(LARGE_NUM,']')'或其他方法來讀取下一個分隔符?你的操作員>>對於任何兩位數的數字都會失敗...... – DevSolar
@DevSolar,我如何使它靈活處理2位數? – user1578897
我覺得你的問題不是關於*編程*,而是關於*設計*,關於將問題分解成邏輯部分。這不能在500個字符的評論框中教授,對不起。基本思想是獲得一個值對 - '''''''',然後解析*那*。一旦完成,獲取* other *值對,並解析*該*。 (在這一點上,你的大腦的某些部分應該自動地跳起來,然後哭泣:「噢!我可以重複使用代碼來讀取值對!」) – DevSolar