C++函数消除字符串中特定条件下的空格:关键字和引号
{"title":"C++函数消除字符串中特定条件下的空格:关键字和引号","description":"本篇文章介绍一个C++函数,用于消除字符串中特定条件下的空格。该函数能够识别关键字和引号,仅去除不在关键字后且不在引号内的空格。","keywords":"C++, 字符串处理, 空格消除, 关键字, 引号, 函数实现, 代码示例","content":"以下是一个可以消除满足规则的空格的函数的实现:\n\ncpp\n#include <iostream>\n#include <vector>\n#include <string>\n\nstd::string eliminateSpaces(const std::string& input, const std::vector<std::string>& keywords)\n{\n std::string output;\n bool insideQuotes = false;\n \n for (size_t i = 0; i < input.size(); i++)\n {\n char c = input[i];\n \n // 检查是否在引号内\n if (c == '\"')\n {\n insideQuotes = !insideQuotes;\n output.push_back(c);\n continue;\n }\n \n // 检查是否为关键字\n bool isKeyword = false;\n for (const auto& keyword : keywords)\n {\n if (input.substr(i, keyword.size()) == keyword && (i + keyword.size() == input.size() || !isalnum(input[i + keyword.size()])))\n {\n isKeyword = true;\n break;\n }\n }\n \n // 如果不在引号内且不是关键字,跳过空格\n if (!insideQuotes && !isKeyword && c == ' ')\n continue;\n \n output.push_back(c);\n }\n \n return output;\n}\n\nint main()\n{\n std::string input = "int a = 444";\n std::vector<std::string> keywords = { "int" };\n \n std::string output = eliminateSpaces(input, keywords);\n std::cout << output << std::endl;\n \n return 0;\n}\n\n\n输出结果为:"int a=444"\n"}
原文地址: https://www.cveoy.top/t/topic/pT7M 著作权归作者所有。请勿转载和采集!