c++ 字符串比较是否为开头
时间: 2024-03-17 18:04:43 浏览: 14
您可以使用 C++ 中的字符串函数 `substr()` 和 `compare()` 来判断一个字符串是否以另一个字符串开头。
具体地,可以使用以下代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "hello world";
string str2 = "hello";
if (str1.substr(0, str2.length()).compare(str2) == 0) {
cout << "str2 is at the beginning of str1" << endl;
} else {
cout << "str2 is not at the beginning of str1" << endl;
}
return 0;
}
```
在上面的代码中,我们首先定义了两个字符串 `str1` 和 `str2`,然后使用 `substr()` 函数截取了 `str1` 的前几个字符,长度为 `str2.length()`,然后使用 `compare()` 函数将截取后的字符串与 `str2` 进行比较,如果它们相等,则说明 `str2` 是 `str1` 的开头,否则不是。
希望这样可以帮助您。
相关问题
c++判断字符串是否为utf8编码
判断字符串是否为UTF-8编码,需要检查字符串的字节序列是否满足UTF-8编码规则。UTF-8编码规定了字符的编码方式与字节序列的对应关系。
UTF-8编码使用1至4个字节来表示不同的Unicode字符,其编码规则如下:
- 单字节编码:对于Unicode码范围在U+0000至U+007F之间的字符,其UTF-8编码为一个字节,范围为0x00至0x7F(十六进制)。
- 多字节编码:对于Unicode码范围在U+0080至U+FFFF之间的字符,其UTF-8编码使用2至4个字节,其中每个字节的最高两位分别为1和0,后面的字节均以10开头。
根据上述规则,我们可以逐字节地检查字符串的字节序列。如果满足上述的字节编码规则,则认为字符串是UTF-8编码。如果不满足规则,则可以判断字符串不是UTF-8编码。
以下是一个简单的示例代码:
```python
def is_utf8(string):
bytes = string.encode('utf-8')
length = len(bytes)
i = 0
while i < length:
if (bytes[i] & 0b10000000) == 0: # 单字节编码
i += 1
elif (bytes[i] & 0b11100000) == 0b11000000: # 2字节编码
if i + 1 < length and (bytes[i + 1] & 0b11000000) == 0b10000000:
i += 2
else:
return False
elif (bytes[i] & 0b11110000) == 0b11100000: # 3字节编码
if i + 2 < length and (bytes[i + 1] & 0b11000000) == 0b10000000 and (bytes[i + 2] & 0b11000000) == 0b10000000:
i += 3
else:
return False
elif (bytes[i] & 0b11111000) == 0b11110000: # 4字节编码
if i + 3 < length and (bytes[i + 1] & 0b11000000) == 0b10000000 and (bytes[i + 2] & 0b11000000) == 0b10000000 and (bytes[i + 3] & 0b11000000) == 0b10000000:
i += 4
else:
return False
else:
return False
return True
string = "测试UTF-8"
result = is_utf8(string)
print(result) # 输出:True
```
以上代码逐字节检查了`string`字符串的字节序列,并判断其是否满足UTF-8编码规则。如果输出结果为True,则表示字符串是UTF-8编码,反之则不是。
regex C++判断字符串是否属于 json
可以使用 C++ 中的正则表达式库 `regex` 来判断一个字符串是否符合 JSON 格式。以下是一个示例代码:
```cpp
#include <regex>
#include <iostream>
bool isJson(const std::string& str) {
const std::regex pattern(R"(\s*\{.*\}\s*)");
return std::regex_match(str, pattern);
}
int main() {
std::string str = R"({"name": "John", "age": 30, "city": "New York"})";
if (isJson(str)) {
std::cout << "The string is a valid JSON." << std::endl;
} else {
std::cout << "The string is not a valid JSON." << std::endl;
}
return 0;
}
```
该代码中,我们使用了一个正则表达式来匹配 JSON 格式的字符串。其中 `R"(\s*\{.*\}\s*)"` 表示一个原始字符串,其内容为 `\s*\{.*\}\s*`,该正则表达式可以匹配以 `{` 开头,以 `}` 结尾,中间可以包含任意字符的字符串。`std::regex_match` 函数可以用来判断一个字符串是否符合正则表达式的规则。如果符合,则返回 `true`,否则返回 `false`。