自己没有用C++做过开发,一直是用C#,Java这类OO语言或者JS,shell之类的脚本语言。所以偶尔想写一些C++的代码,还挺困难。
1.如何访问一个二维数组
1 //the arry that we want to access
2 char Country[255][60] = {"China", "England", "USA"};
3
4 //method 1
5 int i=0;
6 while(*Country[i] != NULL) {
7 std::cout << Country[i] << std::endl;
8 i++;
9 }
10
11 //method 2
12 int i=0
13 for(i=0;i<255;i++)
14 {
15 char* country = pArr->Country[i];
16 cout<<country<<endl;
17 }
2 char Country[255][60] = {"China", "England", "USA"};
3
4 //method 1
5 int i=0;
6 while(*Country[i] != NULL) {
7 std::cout << Country[i] << std::endl;
8 i++;
9 }
10
11 //method 2
12 int i=0
13 for(i=0;i<255;i++)
14 {
15 char* country = pArr->Country[i];
16 cout<<country<<endl;
17 }
2.函数指针的声明与使用
1 //这里定义fp为CReverseIP类型内的一个函数指针类型
2 typedef BOOL (CReverseIP::*fp)(const char* inputIP, IPInfo *ipInfo);
3
4 //在CReverseIP中声明一个fp类型变量
5 class CReverseIP
6 {
7 /*some other stuff*/
8 public:
9 fp fParse;
10 /*some other stuff*/
11 }
12
13 //赋值
14 revIPTool->fParse = &CReverseIP::GetIPLocation_Old;
15
16 //使用
17 retvalue = (this->*fParse)(strLine.c_str(), ipInfo);
2 typedef BOOL (CReverseIP::*fp)(const char* inputIP, IPInfo *ipInfo);
3
4 //在CReverseIP中声明一个fp类型变量
5 class CReverseIP
6 {
7 /*some other stuff*/
8 public:
9 fp fParse;
10 /*some other stuff*/
11 }
12
13 //赋值
14 revIPTool->fParse = &CReverseIP::GetIPLocation_Old;
15
16 //使用
17 retvalue = (this->*fParse)(strLine.c_str(), ipInfo);
3.文件读写(下面这段示例代码中读写具在)
1 BOOL CReverseIP::ParseIPFileToFile(string srcFile, string desFile)
2 {
3 ifstream streamIn(srcFile.c_str());
4 if(streamIn.fail())
5 {
6 cout<<srcFile<<" could not be opened."<<endl;
7 return FALSE;
8 }
9 fstream desStream;
10 desStream.open(desFile.c_str(),ios::in);
11 if(desStream)
12 {
13 cout<<desFile<<" already exists, overwrite?(Y/N)"<<endl;
14 desStream.close();
15 char c;
16 //c = getchar();
17 cin>>c;
18 switch(c)
19 {
20 case 'Y':
21 break;
22 case 'N':
23 return FALSE;
24 default:
25 break;
26 }
27 }
28
29 ofstream streamOut(desFile.c_str(), ios::out);
30 streamOut<<"ip\tcountry\tprovince\tcity"<<endl;
31 string strLine;
32 IPInfo* ipInfo = new IPInfo();
33 BOOL retvalue = FALSE;
34 while(getline(streamIn, strLine))
35 {
36 retvalue = (this->*fParse)(strLine.c_str(), ipInfo);
37 if(retvalue==TRUE && ipInfo!=NULL)
38 {
39 streamOut<<ipInfo->ip<<"\t"<<ipInfo->country<<"\t"<<ipInfo->province<<"\t"<<ipInfo->city<<endl;
40 }
41 else
42 {
43 continue;
44 }
45 }
46 streamIn.close();
47 streamOut.close();
48 delete ipInfo;
49 return TRUE;
50 }
2 {
3 ifstream streamIn(srcFile.c_str());
4 if(streamIn.fail())
5 {
6 cout<<srcFile<<" could not be opened."<<endl;
7 return FALSE;
8 }
9 fstream desStream;
10 desStream.open(desFile.c_str(),ios::in);
11 if(desStream)
12 {
13 cout<<desFile<<" already exists, overwrite?(Y/N)"<<endl;
14 desStream.close();
15 char c;
16 //c = getchar();
17 cin>>c;
18 switch(c)
19 {
20 case 'Y':
21 break;
22 case 'N':
23 return FALSE;
24 default:
25 break;
26 }
27 }
28
29 ofstream streamOut(desFile.c_str(), ios::out);
30 streamOut<<"ip\tcountry\tprovince\tcity"<<endl;
31 string strLine;
32 IPInfo* ipInfo = new IPInfo();
33 BOOL retvalue = FALSE;
34 while(getline(streamIn, strLine))
35 {
36 retvalue = (this->*fParse)(strLine.c_str(), ipInfo);
37 if(retvalue==TRUE && ipInfo!=NULL)
38 {
39 streamOut<<ipInfo->ip<<"\t"<<ipInfo->country<<"\t"<<ipInfo->province<<"\t"<<ipInfo->city<<endl;
40 }
41 else
42 {
43 continue;
44 }
45 }
46 streamIn.close();
47 streamOut.close();
48 delete ipInfo;
49 return TRUE;
50 }