Я использую std::stringstream для анализа строки фиксированного формата в значения. Однако последнее значение для анализа не имеет фиксированной длины.
Чтобы разобрать такую строку, я мог бы сделать:
std::stringstream ss("123ABCDEF1And then the rest of the string");
ss >> std::setw(3) >> nId
>> std::setw(6) >> sLabel
>> std::setw(1) >> bFlag
>> sLeftovers;
Но как мне установить ширину так, чтобы выводилась оставшаяся часть строки?
Путем проб и ошибок я обнаружил, что это работает:
>> std::setw(-1) >> sLeftovers;
Но каков правильный подход?
std::setw(-1)
вы имеете в виду, чтоsLeftovers
содержит значение «И» или «А затем остальная часть строки»? Я нахожу, что 'std::setw(-1)` извлекает только слово И, т.е. тот же результат, что и '›› sLeftovers' — это не влияет, что согласуется с документацией дляstd::setw
, в которой говорится, чтоstd::setw
устанавливает количество символов, которые будут использоваться в качестве поля для следующей операции вставки. - person mark   schedule 21.11.2012