bloggerads

2013年9月23日 星期一

C++ class的應用(一)

目前想到的應用有兩種,寫成class程式會更漂亮:

  1. TUI: 在DOS底下切換文字視窗
  2. 檔案讀寫: (如下)

+   class CLog
+   {
+   public:   
+       CLog()
+       { 
+           if ( !(fp= fopen("my_log.txt", "w") ) 
+              )
+           { printf("Warning! Unable to create file\n");} 
+       }
+       ~CLog()
+       {
+           fclose(fp);
+       }
+       bool write(const char *p)
+       {
+          return ( fprintf(fp, "%s", p) ? 1: 0 );
+       }
+       bool write(char *p)
+       {
+          return ( fprintf(fp, "%s", p) ? 1: 0 );
+       }
+       
+   private:
+       FILE *fp;
+       
+   };

2013年9月19日 星期四

C++ : string

Example 1

+  //
+  // Find all key world position in a string
+  //
+
+  #include <stdio.h>
+  #include <iostream>       // cout
+  #include <string>         // string
+  
+  int main ()
+  {
+    std::string str ("xx23xx67xxabcdxx");
+    std::string key ("xx");
+  
+    for (int pos = str.find(key) ; pos >= 0; ) 
+    { 
+        printf( "xx at: %d\n", pos);         
+        pos = str.find(key, pos+1); 
+    }
+  
+    return 0;
+  }

___________OUTPUT____________
xx at: 0
xx at: 4
xx at: 8
xx at: 14

Example 2

+  //
+  // string -> char array
+  // char array -> string
+  //
+
+  #include <stdio.h>
+  #include <string>
+  #include <string.h> //strncpy
+  
+  int main () {
+    char c1[]="123";
+    std::string cpp(c1); // char array -> string
+    printf("%s\n", c1);
+    
+    char c2[10];
+    for(int x=0; x<sizeof(c2); c2[x]=0, x++); // Reset c2
+    strncpy(c2, cpp.c_str(), sizeof(c2)-1); // string -> char array
+    
+    printf("%s\n", c2);
+    return 0;
+  }

___________OUTPUT____________
123
123

Example 3

+ #include <stdio.h>
+ #include <string>
+ #include <sstream>
+ // #include <iostream> cout

+
+ int main()
+ {

+    std::stringstream ss;
+    std::string str;
+    //
+    // int -> string 
+    // 
+    int i= 20;
+    // ss.clear();
+    // str = std::st_string(i);
+    ss << i;
+    ss >> str;
+    std::cout << "int -> string " << str << std::endl;
+    printf("----------------------------\n");
+    //
+    // string -> int 
+    //
+    int ival;
+    ss.clear();
+    ss << str;
+    ss >> ival;
+    std::cout << "string -> int " << ival << std::endl;
+    
+    return 0;
+ }