C++ 不能减去两个字符串

C++ Can't subtract two strings

本文关键字:两个 字符串 不能 C++      更新时间:2023-10-16

我想在这个代码中减去两个字符串,但它不让我这样做,并给出了一个运算符 - 错误。此代码基本上尝试将完整的输入名称分为两个输出:名字和姓氏。请帮忙!谢谢!

#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(" "));
第一个参数是要提取的子字符串的

起始索引,第二个参数是子字符串的长度。

std::string 没有"减号"(-) 运算符。你必须使用

std::string::substr 或 std::string::erase

如果你真的想使用-运算符,你可以重载它。

您将如何为字符串定义减号运算符?你会从一开始就减去吗?还是结束?

此外,什么是"cat" - "dog"?这个运算符没有意义。

相反,您可能希望使用字符串索引,即 employeeName[i],并单独复制字符,或者按照其他人的建议使用std::string::substrstd::string::erase

我会发现substr()最简单的,因为它能够删除字符串部分(在本例中为名字和姓氏)。