⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex6_22.cpp

📁 一些同学问我
💻 CPP
字号:
/* Code for exercise 6.22. |  | "C++ Solutions--Companion to The C++ Programming Language, Third Edition" | by David Vandevoorde; Addison-Wesley 1998; ISBN 0-201-30965-3. | | Permission to use, copy, modify, distribute and sell this software | and its documentation for any purpose is hereby granted without fee. | The author makes no representations about the suitability of this | software for any purpose.  It is provided "as is" without express or | implied warranty. `----------------------------------------------------------------------*/#include <iostream>using std::cin;enum Context { c_comment, cpp_comment,               string_literal, char_literal, file_end };void handle_c_comment() {   char ch;   while (cin.get(ch)) {      if (ch=='*') {         // Skip additional asterisks:         while(cin.get(ch) && ch=='*');         if (ch=='/')            break;      }   }}void handle_cpp_comment() {   // Skip until end-of-line:   char ch;   while (cin.get(ch) && ch!='\n');   cout << '\n';}void handle_literal(char delimiter) {   cout << delimiter; // Read left delimiter   char ch;   while (cin.get(ch)) {      cout << ch;      if (ch==delimiter) // Right delimiter found?         break;      else if (ch=='\\') // Next character passed unmodified         cin.get(ch) && cout << ch;   }}Context handle_code() {   char ch;   while (cin.get(ch)) {      switch (ch) {         case '/':            if (!cin.get(ch)) { // This would in fact be               cout << '/';       //  erroneous C++ code               return file_end;            } else {               if (ch=='*')                  return c_comment;               else if (ch=='/')                  return cpp_comment;               else {                  cout << '/';                  cin.putback(ch);                  break;               }            }         case '\"': return string_literal;         case '\'': return char_literal;         default: cout << ch;      }   }   return file_end;}int main(int argc, char *argv[]) {   if (argc>1) {      cerr << "This program takes no arguments.\n";      return -1;   } else {      Context context;      while ((context = handle_code())!=file_end)         switch(context) {            case c_comment:               handle_c_comment();               break;            case cpp_comment:               handle_cpp_comment();               break;            case string_literal:               handle_literal('\"');               break;            case char_literal:               handle_literal('\'');               break;         }      return 0;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -