Я не слишком уверен, что вам действительно нужно. Похоже, вы не
знать точный формат вашего файла. (Вы, конечно, не
описал что-нибудь «точное».) Для преобразования целых или двойных
из строки следует использовать istringstream
. Если ты хочешь
для поддержки различных разделителей, вы можете легко написать
манипулятор, чтобы сделать это, что-то вроде:
class skipSeparators
{
std::string mySeparators;
public:
skipSeparators( std::string const& separators )
: mySeparators( separators )
{
}
friend std::ostream&
operator>>(
std::ostream& source,
SkipSeparators const& manip )
{
source >> std::ws;
int next = source.peek();
if ( next != EOF
&& std::find( mySeparators.begin(),
mySeparators.end(),
static_cast<char>( next )
) != mySeparators.end() ) {
source.get();
}
return source;
}
};
С этим вы можете написать что-то вроде:
while ( input >> skipSeparators( ",;" ) >> someDouble ) {
// process some double...
}
Если важно знать, где заканчивается строка, вы можете прочитать
файл, используя getline()
, и создайте istringstream
для каждого
линии, используя вышеупомянутое на нем.