在 C++中,如何比较两个字符串是否相等或某个字符串是否以特定子串开头
时间: 2024-10-05 12:04:04 浏览: 151
在C++中,有几种方式可以比较两个字符串:
1. **直接使用 `==` 操作符**:
如果你想检查两个字符串是否完全相等,你可以直接使用 `==` 运算符:
```cpp
std::string str1 = "hello";
std::string str2 = "hello";
if (str1 == str2) {
// 字符串相等
}
```
2. **使用 `std::string::compare()` 函数**:
这个函数会返回两个字符串的比较结果,如果相同则返回0:
```cpp
int result = str1.compare(str2);
if (result == 0) {
// 字符串相等
}
```
3. **检测子串开头**:
你可以使用 `std::string::substr()` 函数获取子串,然后通过 `str1.substr(0, n) == str2` 来判断某字符串是否以另一个字符串开头:
```cpp
if (str1.substr(0, strlen("prefix")) == "prefix") {
// str1 以 "prefix" 开头
}
```
相关问题
用c++按照要求实现串的基本操作,程序界面如下所示:1.求字符串的长度 2.从主串中取一个子串 3.比较两个字符串的大小 4.比较一个子串在主串中的位置 5.将两个子串连接成一个新的字符串 0.退出系统
好的,以下是用C++实现的代码:
```c++
#include<iostream>
#include<string>
using namespace std;
class String{
private:
string str;
public:
String(string s){
str = s;
}
int length(){
return str.length();
}
string substring(int start, int end){
return str.substr(start, end - start);
}
int compare(String s){
if(str == s.str){
return 0;
}else if(str < s.str){
return -1;
}else{
return 1;
}
}
int find(String s){
size_t index = str.find(s.str);
if(index == string::npos){
return -1;
}else{
return index;
}
}
string concat(String s){
return str + s.str;
}
};
int main(){
while(true){
cout<<"请选择以下操作:"<<endl;
cout<<"1.求字符串的长度"<<endl;
cout<<"2.从主串中取一个子串"<<endl;
cout<<"3.比较两个字符串的大小"<<endl;
cout<<"4.比较一个子串在主串中的位置"<<endl;
cout<<"5.将两个子串连接成一个新的字符串"<<endl;
cout<<"0.退出系统"<<endl;
int choice;
cin>>choice;
if(choice == 1){
string s;
cout<<"请输入字符串:";
cin>>s;
String string(s);
cout<<"字符串长度为:"<<string.length()<<endl;
}else if(choice == 2){
string s;
cout<<"请输入字符串:";
cin>>s;
String string(s);
int start, end;
cout<<"请输入子串起始位置:";
cin>>start;
cout<<"请输入子串结束位置:";
cin>>end;
cout<<"子串为:"<<string.substring(start, end)<<endl;
}else if(choice == 3){
string s1, s2;
cout<<"请输入第一个字符串:";
cin>>s1;
String string1(s1);
cout<<"请输入第二个字符串:";
cin>>s2;
String string2(s2);
int result = string1.compare(string2);
if(result == 0){
cout<<"两个字符串相等"<<endl;
}else if(result == -1){
cout<<"第一个字符串小于第二个字符串"<<endl;
}else{
cout<<"第一个字符串大于第二个字符串"<<endl;
}
}else if(choice == 4){
string s1, s2;
cout<<"请输入主串:";
cin>>s1;
String string1(s1);
cout<<"请输入子串:";
cin>>s2;
String substring(s2);
int index = string1.find(substring);
if(index == -1){
cout<<"Substring not found"<<endl;
}else{
cout<<"子串在主串中的位置:"<<index<<endl;
}
}else if(choice == 5){
string s1, s2;
cout<<"请输入第一个子串:";
cin>>s1;
String string1(s1);
cout<<"请输入第二个子串:";
cin>>s2;
String string2(s2);
cout<<"新字符串为:"<<string1.concat(string2)<<endl;
}else if(choice == 0){
break;
}else{
cout<<"输入错误,请重新输入"<<endl;
}
}
return 0;
}
```
运行程序后,就会出现操作界面。您可以根据需要选择操作,程序会根据您的选择进行相应的操作。
在字符串中查找子串c++
您好!要在字符串s中查找子串c,可以使用以下算法:
1. 遍历字符串s,从第一个字符开始,一直到第 (len(s) - len(c) + 1) 个字符,其中 len(s) 和 len(c) 分别表示字符串 s 和子串 c 的长度。
2. 对于每个字符 i,判断 s[i:i+len(c)] 是否等于 c。如果相等,则找到了子串,返回子串的起始位置 i。
3. 如果遍历完整个字符串 s 后仍未找到子串 c,则表示子串不存在,返回 -1。
下面是 Python 代码实现:
```python
def find_substring(s, c):
for i in range(len(s) - len(c) + 1):
if s[i:i+len(c)] == c:
return i
return -1
```
希望能对您有所帮助!
阅读全文