【问题标题】:C++ Can't subtract two stringsC++不能减去两个字符串
【发布时间】:2013-10-25 02:46:08
【问题描述】:

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

#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 方法
  • 感谢您的回复。但是我想用简单的方法来做,因为这个 q 在我的测试中,我们还没有涵盖高级的东西。
  • 查看您的 C++ 教科书或参考书,以查看带有 std::string 的所有可用运算符并验证减法运算符。
  • 注意string::erase修改了输入字符串,所以即使firstName = employeeName - lastName起作用了,名字已经从employeeName中删除了。
  • 感谢乔纳森!!这真的很有帮助!!!

标签: c++ string operator-keyword subtraction


【解决方案1】:

您应该使用std::string::substr。减去这样的字符串是无效的。

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

第一个参数是要提取的子串的起始索引,第二个参数是子串的长度。

【讨论】:

    【解决方案2】:

    std::string 没有“减号”(-) 运算符。您必须使用std::string::substr 或std::string::erase

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

    【讨论】:

      【解决方案3】:

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

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

      相反,您可能想要使用字符串索引,即employeeName[i],并单独复制字符,或者使用std::string::substr 或std::string::erase,正如其他人所建议的那样。

      我会发现 substr() 最简单,因为它能够删除字符串部分(在这种情况下,是名字和姓氏)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 2014-08-17
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多