在C++中输入两个字符串str1和str2每个字符串是一行查找str2在str1里首次出现的位置如果str2在str1中不存在则输出-1 每一行不超过160个字符,可以包含任意字符
时间: 2023-05-22 22:03:11 浏览: 231
这个问题可以通过使用C语言中的strstr函数来解决。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[161], str2[161];
while (fgets(str1, 161, stdin) && fgets(str2, 161, stdin)) {
// Remove newline characters from the end of each string
str1[strcspn(str1, "\n")] = '\0';
str2[strcspn(str2, "\n")] = '\0';
char *pos = strstr(str1, str2);
if (pos) {
printf("%ld\n", pos - str1);
} else {
printf("-1\n");
}
}
return 0;
}
```
在这个程序中,我们使用fgets函数逐行读取输入,将每行字符串存储到str1和str2中。然后,我们使用strstr函数在str1中查找str2的位置。如果找到了,我们将该位置与str1的起始地址进行比较,并输出它们之间的偏移量。如果没有找到,我们输出-1。
相关问题
输入两个字符串str1和str2,查找str2在str1里首次出现的位置c++
在 C++ 中,你可以使用 `std::string` 的内置函数或者遍历的方式找到 `str2` 首次出现在 `str1` 中的位置。这里有一个简单的示例,使用线性搜索:
```cpp
#include <string>
#include <string_view> // For C++17 and later
int findSubstring(const std::string& str1, const std::string& str2) {
if (str2.empty()) {
return 0; // 如果str2为空,直接返回0
}
size_t pos = str1.find(str2);
// 返回首次出现的位置,如果找不到则返回 std::string::npos(通常等于 -1)
return pos != std::string::npos ? pos : -1;
}
// 使用示例
std::string main_str = "Hello, world!";
std::string sub_str = "world";
int position = findSubstring(main_str, sub_str);
if (position != -1) {
std::cout << "Substring found at index: " << position << std::endl;
} else {
std::cout << "Substring not found" << std::endl;
}
```
在这个例子中,`find()` 函数会在 `str1` 中查找 `str2`,并返回第一个匹配位置。如果没有找到,则返回 `std::string::npos`。
有两个字符串str1和str2,它们的长度都不超过100个字符。请使用C++语言实现在str1中查找str2的初始位置。
在C++中,你可以使用`std::string`的成员函数`find()`来查找子串在一个字符串中的首次出现。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
int findSubstring(const std::string& str1, const std::string& str2) {
if (str1.empty() || str2.empty()) {
return -1; // 如果任何一个字符串为空,返回-1表示未找到
}
return str1.find(str2); // 查找str2在str1中的起始位置,如果没有找到则返回str1.length()
}
int main() {
std::string str1 = "Hello, how are you?";
std::string str2 = "are";
int position = findSubstring(str1, str2);
if (position != std::string::npos) {
std::cout << "Substring found at position: " << position << std::endl;
} else {
std::cout << "Substring not found." << std::endl;
}
return 0;
}
```
在这个例子中,`findSubstring`函数接收两个字符串作为输入,如果找到了`str2`在`str1`中的位置,它将返回该位置;如果找不到,则返回`std::string::npos`,通常被理解为-1。
阅读全文