Кажется, у меня проблема с извлечением данных из потока строк. Кажется, в начале моего извлечения отсутствуют первые два символа.
У меня есть что-то похожее на следующий код:
std::stringstream ss(
std::stringstream::in |
std::stringstream::out
);
bool bValid;
double dValue;
double dTime;
for( (int i = 0; i < 5; i++ )
{
bValid = getValid();
dValue = getValue();
dTime = getTime();
// add data to stream
ss << bValid;
ss << dValue;
ss << dTime;
}
int strsize = ss.str().size();
char* data = new char[strsize];
std::strcpy(data, ss.str().c_str());
// then do stuff with data
// ...... store data in an Xml Node as CDATA
// read data back
std::stringstream ssnew( std::stringstream in | std::stringstream out );
ss.clear();
ss << getCharData(); // returns a char* and puts it in stream.
for( int i = 0; i < 5; i++ )
{
ssnew >> bValid; // do something with bValid
ssnew >> dValue; // do something with dValue
ssnew >> dTime; // do something with dTime
}
У меня проблема с тем, что при использовании оператора извлечения при чтении данных из «ssnew» кажется, что пропускаются первые два символа. В отладчике, например, он показывает, что поток строк имеет «001.111.62.2003 ... и т. Д.». Однако после первого «ssnew >> bValid» bValid становится «истиной», а dValue становится «0,111», а dTime становится «0,62», указывая, что первые два нуля в потоке игнорируются. Почему это не начинается в начале потока?
Ура,
Сет