Я довольно новичок в c ++ и столкнулся с проблемой, когда одним поиском я не смог найти решение.
Проблема в том, почему istringstream никогда не меняет своего значения внутри цикла ниже?
Он берет значение из dirs [0] и dirs [1] и никогда не меняет их на возрастающее int i.
Btw. значения в 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 )
Заранее благодарим за предоставленную помощь.