Я пытаюсь создать базовый пользовательский интерфейс, который не учитывает регистр для удобства. Для этого я сделал класс конвертера, который делает строку в верхнем регистре, но я наткнулся на проблему. После использования класса оператор if в main() должен интерпретировать сообщение из конвертера, но он только считывает исходный вход, а не заглавный, и я попытался вернуть преобразованную строку непосредственно из конвертер, но это не позволит мне.Возврат строковой переменной в C++
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
string response;
//converts responses to upper-case
void convert(string response) {
for (int i = 0; i < response.length(); i++) {
response[i] = toupper(response[i]);
}
}
//main dialogue
int main() {
cout << "How are you?: ";
getline(cin, response);
convert(response);
if (response == "GOOD") {
cout << "Response 1./l";
}
else {
cout << "Response 2./l";
}
}
Я новичок в C++, поэтому я прошу прощения, если ошибка была легкой, чтобы исправить или, если у меня есть трудности в понимании решения.
@ John3136 Хороший вопрос об избежании копирования, когда это возможно. – NoseKnowsAll
Я не знал, что классы могут быть идентифицированы как строки, которые, вероятно, устранили бы мою проблему. В конце я положил getline (cin, response); в самом конвертере и просто называли конвертер всякий раз, когда мне нужен был ответ. – Zyxlm
«Я не знал, что классы могут быть идентифицированы как строки» Что это значит? И теперь у вас есть вход в сочетании с модификацией - это плохая разработка программного обеспечения. Здесь представлено несколько вариантов хороших рабочих решений, но вы игнорируете их всех? – John3136