Данные, сохраненные в моем файле (пробелы добавлены как в начале, так и в конце специально для этого теста):
1 2 3
Загрузка данных с помощью приведенного ниже кода с использованием или без "std::ws" не вызывает никакой разницы. Поэтому меня смущает роль "std::ws", поскольку я видел код, использующий его. Может кто-нибудь объяснить немного? Спасибо!
void main ()
{
ifstream inf;
inf.open ("test.txt");
double x=0, y=0, z=0;
string line;
getline(inf, line);
istringstream iss(line);
//Using "std::ws" here does NOT cause any difference
if (!(iss >> std::ws >> x >> y >> z >> std::ws))
{
cout << "Format error in the line" << endl;
}
else
{
cout << x << y << z << endl;
}
iss.str(std::string ());
iss.clear();
cin.get();
}
std::ios_base::noskipws
или вы используете неформатированный ввод, тоstd::ws
может быть полезен. - person 0x499602D2   schedule 03.09.2015skipws
;noskipws
— это функция-манипулятор. - person Potatoswatter   schedule 03.09.2015std::ios_base::skipws
, сколько при неформатированном вводе, который не пропускает начальные пробелы. - person Dietmar Kühl   schedule 03.09.2015