使用>>
輸入float
值後,getline停止正常工作並讀取垃圾。我怎樣才能避免這種情況?混合ifstream getline和>>
string settingsFile = "TerrainSettings.txt";
ifstream settingsStream;
settingsStream.open(settingsFile.data());
assert (settingsStream.is_open());
string line;
getline(settingsStream,line); // fine here
getline(settingsStream,line); // fine here
getline(settingsStream,line); // fine here
float frequency;
float octaves;
float amplitude;
settingsStream>>frequency; // fine here
getline(settingsStream,line); // here it gets trash, why?
settingsStream>>octaves; // trash
getline(settingsStream,line);
settingsStream>>amplitude;
編輯:忽略的包容(),生成下面的錯誤:
settingsStream>>frequency;
settingsStream.ignore(256,'\n');
getline(settingsStream,line); // fine here
settingsStream>>octaves; // trash here
getline(settingsStream,line);
settingsStream>>amplitude;
樣本輸入:
所有的/*Settings for Terrain Rendering, please input values on their respective lines*/
/**/
Frequency:
24
Octaves:
120
Amplitude:
1.25
您能否提供一個示例輸入? – 2012-02-17 22:16:45