C++ 不能减去两个字符串
C++ Can't subtract two strings
我想在这个代码中减去两个字符串,但它不让我这样做,并给出了一个运算符 - 错误。此代码基本上尝试将完整的输入名称分为两个输出:名字和姓氏。请帮忙!谢谢!
#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::substr
或std::string::erase
。
我会发现substr()
最简单的,因为它能够删除字符串部分(在本例中为名字和姓氏)。
相关文章:
- 两个字符串在 c++ 中不相等
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 比较两个字符串后卡在无限循环中
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 两个字符串之间的数学运算
- sscanf() 有两个字符串参数
- 我的字符串数组一次打印出前两个字符串
- 两个 c++ 字符串上的异或
- 函数返回两个字符串的第一个常用字符
- 目标是找到两个 c 字符串之间的公共前缀(必须使用特定的函数标头)
- 我需要在C++的两个字符串之间找到共同的前缀
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 给定两个字符串 S 和 T.确定与 T 相差最小的 S 子字符串?
- gtest:检查字符串是否等于两个字符串之一
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 我可以在系统()中使用两个字符串吗?