C ++ не может вычесть две строки

Я хочу вычесть две строки в этом коде, но он не позволит мне сделать это и выдаст ошибку оператора. Этот код в основном пытается разделить полное имя входа на два выхода: имя и фамилия. Пожалуйста помоги! Спасибо!

#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;
}

0

Решение

Вы должны использовать std::string::substr, Вычитание таких строк недопустимо.

firstName = employeeName.substr(0, employeeName.find(" "));

Первый параметр — это начальный индекс подстроки, которую вы хотите извлечь, а второй параметр — длина подстроки.

3

Другие решения

Как бы вы определили оператор минус для строки? Вы бы вычли с самого начала? Или конец?

Кроме того, что является "cat" - "dog"? Этот оператор не имеет смысла.

Вместо этого вы можете использовать строковые индексы, т.е. employeeName[i]и копировать символы по отдельности, или использовать std::string::substr или же std::string::erase, как другие предложили.

Я бы нашел substr() самый простой, благодаря своей способности удалять разделы строки (в данном случае имя и фамилия).

2

Для оператора «минус» (-) нет станд :: строка. Вы должны использовать станд :: строка :: зиЬзЬг или же станд :: строка :: Стирание

Если вы действительно хотите использовать оператор -, вы можете его перегрузить.

2
По вопросам рекламы [email protected]