文字列ストリームからのデータの抽出に問題があるようです。抽出の開始時に最初の 2 文字が欠落しているようです。
次のコードに似たものがあります。
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」からデータを読み取るときに抽出演算子を使用すると、最初の 2 文字がスキップされるように見えるという問題があります。たとえば、デバッガーでは、stringstream に「001.111.62.2003... など」が含まれていることが示されています。ただし、最初の "ssnew >> bValid" の後、bValid は "true" になり、dValue は "0.111" になり、dTime は "0.62" になり、ストリームの最初の 2 つのゼロが無視されることを示します。ストリームの最初から開始しないのはなぜですか?
乾杯、セス