Для проекта, над которым я работаю, я пытаюсь читать целые числа из текстового файла. В этом случае, они отформатированы как переменные, такие как U = 220В, так что я пытаюсь читать после знака равенства в V. Это код, который я придумал:Чтение целых чисел из текстового файла
if (word[0] == 'U') {
//declaring variables for checking for certain letters
char v = 'V';
char m = 'm';
char M = 'M';
//taking in integer for voltage
while (word[i] != v) {
volt = volt + word[i];
i++;
}
cout << volt << endl;
В В тестовом случае есть три значения U = 200 В, U = 220 В и U = 22000 мВ (m - миллилитры и будут обработаны позже с другой функцией), случайным образом вставленные в файл. При тестировании я получаю вывод:
Первый выход правильный. Во втором и третьем случаях, как представляется, они теряют число в первую очередь, а в третьем случае он добавил еще один ноль в конце. Первоначально я думал, что это просто отбрасывая первое значение, я изменил строку кода
volt = volt + word[i];
в
volt = volt + word[i-1];
, чтобы увидеть, какое значение он будет читать до значения первоначально первого чтения. В этом случай, он сделал то, что я ожидал бы, чтобы это сделать, если это работало должным образом, с выходом в формате:
=200
=200
=20000m
есть ли ошибка в логике моего кода, что я с видом здесь?
РЕДАКТИРОВАТЬ: При попытке отладки далее я переместил окончательную линию печати извне цикла while внутрь, чтобы увидеть, что цикл выводит шаг за шагом. Похоже, что он начинается с 2 и продолжает добавлять от 0 до конца каждую итерацию до окончания 200 000 м.
std :: getline имеет перегрузку, которая сделает расщепление на = простое. Поместите текст после символа = в строковый поток и прочитайте целое число. Чтение остановится на первом не целочисленном символе, например на V. Затем прочитайте этот персонаж. – user4581301