В моей основной программе у меня есть функция, которая выглядит примерно так:
for(int i = 0; i < partsVector.size(); i++) {
if(newChar == "A") {
cout << newChar << endl;
} else {
cout << "Character not found";
}
}
Программа работает со ссылкой на этот текстовый файл, который сам был сохранен в векторе (следовательно, partsVector) (PS я только добавил partCode в список, поскольку я остановился и имел issus)
A:Head:1:2:15.
B:Torso:0:6:5.
C:Leg:0:4:6.
D:Arm:0:4:8.
E:Tail:0:6:2.
В отношении этого фрагмента (я буду включать полную программу), проблема в том, что когда он запускается, он возвращает "Никаких символов не существует "возвращает, когда newChar равен A, что, как видно из текстового файла, есть пример, где существует A. Я могу распечатать список векторов через расширенный для l oop, и он возвращается, как ожидалось. Мне интересно, что не так с моим l oop, в котором он проходит через список векторов и останавливается на последней записи, и использует только это при проверке условия?
FULL CODE
Main
include "driver.h"
#include "implementation.cpp"
#include <fstream>
#include <vector>
using namespace std;
int main() {
readFile();
writeFile();
robotComplexity();
getch();
return 0;
}
Реализация
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <fstream>
#include <vector>
using namespace std;
//declaration of parts variables
char partCode;
std::string partName;
int maximum;
int minimum;
int complexity;
std::vector<string> partsVector;
std::ifstream partsList("Parts.txt");
std::string outputFile = "output.txt";
std::string input;
std::string newChar;
std::stringstream convertChar;
void readFile()
{
std::string line;
while (std::getline(partsList, line)) {
line.pop_back();//removing '.' at end of line
std::string token;
std::istringstream ss(line);
convertChar << partCode;
convertChar >> newChar;
// then read each element by delimiter
int counter = 0;//number of elements you read
while (std::getline(ss, token, ':')) {//spilt into different records
switch (counter) {//put into appropriate value-field according to element-count
case 0:
newChar = token; //convert partCode from a char to a string
break;
case 1:
partName = token;
break;
case 2: newChar2 = token;
break;
case 3: minimum = stoi(token);
break;
case 4: complexity = stoi(token);
break;
default:
break;
}
counter++;//increasing counter
}
partsVector.push_back(newChar);
}
double robotComplexity() {
double complexity = 10;
for(int i = 0; i < partsVector.size(); i++) {
if(newChar == "A") {
cout << newChar << endl;
} else {
cout << "Character not found";
}
}
if(complexity > 100) {
complexity = 100;
}
cout << "\nThe Robot Complexity is: " << complexity << endl;
return complexity;
}
}
Основная функция кода, с которым у меня возникают проблемы, - это слишком l oop в списке векторов, пока он не найдет экземпляр partCode, преобразованный в string и теперь называется newChar, что равно A. На данный момент программа проходит цикл до конца (IE, когда он равен «E») и останавливается там и использует его только для сравнения. Спасибо за любую помощь