Я хочу вычесть две строки в этом коде, но он не позволит мне сделать это и выдаст ошибку оператора. Этот код в основном пытается разделить полное имя входа на два выхода: имя и фамилия. Пожалуйста помоги! Спасибо!
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
string employeeName, firstName, lastName;
int pos1, difference;
int main() {
cout << "Enter your full name: " << endl;
getline(cin, employeeName);
pos1 = employeeName.find(" ");
difference = pos1 - 0;
lastName = employeeName.erase(0,difference);
firstName = employeeName - lastName;
cout << lastName << firstName << endl;
system("pause");
return 0;
}
Вы должны использовать std::string::substr
, Вычитание таких строк недопустимо.
firstName = employeeName.substr(0, employeeName.find(" "));
Первый параметр — это начальный индекс подстроки, которую вы хотите извлечь, а второй параметр — длина подстроки.
Как бы вы определили оператор минус для строки? Вы бы вычли с самого начала? Или конец?
Кроме того, что является "cat" - "dog"
? Этот оператор не имеет смысла.
Вместо этого вы можете использовать строковые индексы, т.е. employeeName[i]
и копировать символы по отдельности, или использовать std::string::substr
или же std::string::erase
, как другие предложили.
Я бы нашел substr()
самый простой, благодаря своей способности удалять разделы строки (в данном случае имя и фамилия).
Для оператора «минус» (-) нет станд :: строка. Вы должны использовать станд :: строка :: зиЬзЬг или же станд :: строка :: Стирание
Если вы действительно хотите использовать оператор -, вы можете его перегрузить.