C++字符串操作:实现特定字符查找及指定位置字符查询程序
嘿,这两个C++字符串相关的小任务不难,我给你拆解一下,附上代码示例和说明:
任务1:实现字符串中特定字符的查找功能
首先,C++的std::string类本身就提供了非常方便的查找方法find(),直接用它就能快速完成需求。如果你想手动实现查找逻辑,也可以自己写遍历判断的代码,我两种都给你列出来:
方法1:使用标准库的find()函数
这个方法最简单,find()会返回目标字符第一次出现的0-based索引,如果没找到目标字符,会返回std::string::npos(一个特殊值,表示不存在)。
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; char target = 'o'; size_t pos = str.find(target); if (pos != std::string::npos) { std::cout << "字符 '" << target << "' 第一次出现的位置是:" << pos << std::endl; } else { std::cout << "字符串中没有找到字符 '" << target << "'" << std::endl; } return 0; }
方法2:手动实现查找逻辑
如果想自己写遍历逻辑,核心就是逐个检查字符串的每个字符,匹配到就返回索引,遍历完没找到就返回-1(或者自定义的标记):
#include <iostream> #include <string> int findChar(const std::string& str, char target) { for (int i = 0; i < str.size(); ++i) { if (str[i] == target) { return i; } } return -1; // 返回-1表示未找到 } int main() { std::string str = "Hello, World!"; char target = 'W'; int pos = findChar(str, target); if (pos != -1) { std::cout << "字符 '" << target << "' 第一次出现的位置是:" << pos << std::endl; } else { std::cout << "字符串中没有找到字符 '" << target << "'" << std::endl; } return 0; }
任务2:输入单词并按指定位置输出字符
注意示例里的逻辑:输入Peanuts,输入4输出N——这里用户输入的是1-based的位置(也就是从1开始计数),所以我们需要把用户输入的位置减1,转成C++字符串默认的0-based索引来取值。同时还要处理输入不合法的情况(比如位置小于1或者大于字符串长度)。
代码示例如下:
#include <iostream> #include <string> int main() { std::string word; int position; // 读取用户输入的单词 std::cout << "请输入一个单词:"; std::cin >> word; // 读取用户想要查看的字符位置 std::cout << "请输入想要显示的字符位置:"; std::cin >> position; // 检查位置是否合法:用户输入的是1-based,转成0-based要减1,且不能超出字符串范围 if (position >= 1 && position <= word.size()) { // 转成0-based索引 char targetChar = word[position - 1]; std::cout << "对应位置的字符是:" << targetChar << std::endl; } else { std::cout << "输入的位置不合法!该单词长度为" << word.size() << ",请输入1到" << word.size() << "之间的数字。" << std::endl; } return 0; }
测试一下示例场景:输入Peanuts(假设拼写是P-e-a-N-u-t-s,第4位是N),输入4,程序会取索引3的字符,输出N,完全符合要求。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

