В программе, которую я сейчас пишу, я до стадии, которая требует использования данных, которые были прочитаны через файл. Некоторые из этих данных содержат числовые элементы, поэтому были выполнены соответствующие преобразования, чтобы сохранить их в векторе строки типа. До этого момента работает.
У меня есть функция robotComplexity, которая вычисляет значение на основе других значений, найденных в файле, которые уже были добавлены в векторный список (весь код будет опубликован ниже). Текстовый файл содержит следующие данные.
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.
Как видно из приведенного ниже кода, этот файл был разделен с помощью разделителя в двоеточии и полной остановки, чтобы сначала отделить переменные, а затем записи. Переменные были сохранены в соответствующих держателях, как показано в коде. Функция с именем robotComplexity содержит значение для l oop
for(std::size_t i=0; i< partsVector.size(); ++i) {
if(partsVector[i] == userChoice) {
cout << userChoice << stoi(stringMaximum) << endl;
}
Проблемы с моим кодом связаны с этим для l oop. Программа может l oop через файл и повторно определить первую переменную partCode (преобразованную в newChar) соответствующих значений A, B, C, D, E. Так, например, когда пользователь вводит A, он возвращает A, вводит B, возвращает B et c. Теперь мои проблемы связаны с попыткой распечатать другие переменные, хранящиеся в векторе. В строке cout << userChoice ... et c он успешно возвращает букву (пример A), но не возвращает правильное значение для stringMaximum, преобразованное в int. Возвращаемое значение равно 0, где оно должно быть равно значению для partCode A (в данном случае) </p>
Я спрашиваю, может ли кто-нибудь создать / исправить my для l oop, чтобы при cout << "Variable" вызывается, он может успешно вывести на консоль значение этой переменной в соответствии с partCode </p>
Например, если пользователь вводит A в качестве кода детали, вывод должен быть
code
cout << userChoice << partName << stringMaximum << stringMinimum << stringComplexity << endl;
вывод
A
Head
1
2
15
файл, содержащий функции
struct Part {
char partCode;
std::string partName;
int maximum;
int minimum;
int complexity;
} myPart;
std::vector<string> partsVector;
std::ifstream partsList("Parts.txt");
std::string outputFile = "output.txt";
std::string input;
std::string newChar;
std::stringstream convertChar;
std::string stringMaximum = std::to_string(myPart.maximum);
std::string stringMinimum = std::to_string(myPart.minimum);
std::string stringComplexity = std::to_string(myPart.complexity);
void readFile() //function to read Builders, Customers and Parts text file
{
std::string line;
while (std::getline(partsList, line)) {
line.pop_back();//removing '.' at end of line
std::string token;
std::istringstream ss(line);
convertChar << myPart.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:
myPart.partName = token;
break;
case 2:
myPart.maximum =stoi(token);
break;
case 3:
myPart.minimum = stoi(token);
break;
case 4:
myPart.complexity = stoi(token);
break;
default:
break;
}
counter++;//increasing counter
}
partsVector.push_back(newChar);
partsVector.push_back(myPart.partName);
partsVector.push_back(stringMaximum);
partsVector.push_back(stringMinimum);
partsVector.push_back(stringComplexity);
}
}
double robotComplexity() {
double complexity;
string userChoice;
cout << "Enter a part code A ,B ,C ,D or E" << endl;
cin >> userChoice;
for(std::size_t i=0; i< partsVector.size(); ++i) {
if(partsVector[i] == userChoice) {
cout << userChoice << stoi(stringMaximum) << endl;
}
}
}
Спасибо за любую помощь. Если вам нужны какие-либо объяснения, пожалуйста, не стесняйтесь спрашивать. PS Я знаю, что глобальные переменные не лучше всего использовать, но как только мои функции будут работать правильно, я уберу код с локальных переменных.