我对 c++ 相当陌生,并且遇到了一个问题,即通过单独搜索我找不到解决方案。
问题是,为什么 istringstream 在下面的循环中永远不会改变它的值?
它从 dirs[0] 和 dirs[1] 中获取值,并且永远不会将它们更改为递增的 int i。顺便提一句。dirs[ i ] 和 dirs [ i + 1 ] 中的值存储为十六进制值(例如 0F9C8924)。
下面是我的最新设置,我尝试了其他几种方法,但没有成功,例如在循环中使用 istringstream 并使用 ios_base::trunc 等。
等等,确实有不同的值并且dirs[ i ]
被正确读取,但是当试图通过 istringstream 将字符串十六进制转换为无符号整数时,它永远不会采用新值。
unsigned int f;
unsigned int t;
istringstream ss;
istringstream ss2;
for( int i = 0; i < count; i+=3 ) {
ss.clear();
ss2.clear();
ss.str( dirs[ i ] );
ss2.str( dirs[ i + 1 ] );
ss >> f;
ss2 >> t;
// do something else with dirs[ i + 3 ], not relevant
}
count
和dirs
是一个全局变量,count
在另一个函数中增加,它的值在dirs
.
很抱歉,如果以前有人问过这个问题,但我发现的解决方案对我不起作用。比如ss.clear()
或while( ss >> f )
提前感谢您提供的任何帮助。