Всякий раз, когда я запускаю свой код, я получаю первую строку, вытащенную из файла, но только первую. Есть что-то, чего я не хватает? Я столкнулся с проблемой, когда я применил stringstream, чтобы попробовать и более легко прочитать строки из шестнадцатеричного файла и быстрее преобразовать строку в шестнадцатеричное значение. Он читал в каждой строке соответственно раньше, но теперь это не так. Мне что-то не хватает в понимании того, как работает getline()?Как перемещаться по каждой строке в getline()
сс является stringstream, fileIn это файл, hexInput это строка, память [] представляет собой массив коротких междунар, команда представляет собой короткий INT, opCounter является ква ...
string hexInput;
stringstream ss;
short int instruction;
ifstream fileIn ("proj1.txt");
if (fileIn.is_open())
{
while (getline(fileIn, hexInput))
{
ss << hex << hexInput;
ss >> instruction;
memory[opCounter] = instruction;
cout << hex << memory[opCounter] << '\t';
cout << opCounter << '\n';
ss.str("");
opCounter++;
}
fileIn.close();
}
else cout << "Unable to open file";
Выше вся функция (которая работала перед использованием stringstream) и ниже - это содержимое файла.
4000
0033
0132
2033
4321
2137
D036
A00F
B003
C00C
3217
6217
E044
FFFF
6016
1013
FFFF
0
0
0
0
1
2
3
4
5
Есть 26 линий и последний выход opCounter говорит «19» в шестнадцатеричном, который заставляет меня предположить, что файл будет строка за строкой читать, но stringstream никогда не обновляется. Это моя первая программа на C++ и я новичок в некоторых из этих функций, которые я пытаюсь реализовать. Спасибо за любую помощь ...
Откуда вы знаете, что читаете только первую строку? – 0x499602D2
Я предполагаю, что потому, что первый cout показывает, что является первой строкой файла, а второй показывает правильный приращение opCounter; Я также пробовал просто выводить инструкцию через каждый проход, но результаты точно такие же. –
Можете ли вы показать нам больше кода, который касается этой конкретной проблемы? То есть, покажите нам, что происходит до запуска 'getline'. Также, пожалуйста, покажите нам содержимое файла. – 0x499602D2