C++如何不使用STL、用char和基础循环输出不含字母'e'的单词
以下是完全不使用STL、仅基于char类型与基础循环实现的方案,逻辑简单直观,底层执行效率更高:
实现思路
- 直接用char数组存储原始字符串,完全规避STL的string、stringstream等组件
- 遍历字符串过程中逐字符拼接当前单词,同步检查单词中是否包含字母
e - 遇到空格/句末标点时判定单词结束,若当前单词有效且不含
e则输出,随后重置状态处理下一个单词
实现代码
#include <stdio.h> #include <stdlib.h> int main() { char origin_str[] = "We study C++ programming language first semester."; char curr_word[128] = {0}; // 足够容纳单个单词的缓冲区 int curr_len = 0; int contain_e = 0; // 输出原始字符串 puts(origin_str); for (int i = 0; origin_str[i] != '\0'; i++) { // 遇到分隔符(空格/句点)判定当前单词结束 if (origin_str[i] == ' ' || origin_str[i] == '.') { // 单词非空且不含e则输出 if (curr_len > 0 && !contain_e) { curr_word[curr_len] = '\0'; puts(curr_word); } // 重置状态 curr_len = 0; contain_e = 0; continue; } // 检查当前字符是否为e,若需要兼容大写E可修改为 origin_str[i] == 'e' || origin_str[i] == 'E' if (origin_str[i] == 'e') { contain_e = 1; } curr_word[curr_len++] = origin_str[i]; } system("pause"); return 0; }
运行输出
We study C++ programming language first semester. study C++ programming first
内容的提问来源于stack exchange,提问作者dsa14dfS
相关产品推荐
相关产品推荐

