✔ 最佳答案
// Visual Studio
// Headers and Macros
#ifndef _MSC_VER
#undef NULL
#define NULL 0
#endif
#include <iostream>
#include <cstdlib>
using namespace std;
//
#include <cstring>
#include <string>
//class CHW
//{
//public:
// CHW(void){}
// // Rule of Three in C++
// // 1. Copy Constructor
// CHW(CHW& clone){}
// // 2. Copy Assignment Operator
// CHW& operator=(CHW& clone)
// {
// if ( this != &clone ){}
// return *this;
// }
// // 3. Destructor
// ~CHW(){}
//private:
//};
//Main Function
#ifndef _MSC_VER
int
#else
void
#endif
main(int argc, char** argv)
{
//==START==//
char str[] = "012.345.678.xxx";
const char* tok = ".";
char* p = NULL;
string s4[4];
int i = 0;
cout<<str<<endl;
p = strtok( str, tok);
while ( p != NULL )
{
s4[i] = p;
cout<<s4[i ++]<<endl;
p = strtok( NULL, tok);
}
p = NULL;
s4->clear();
//==END==//
system("PAUSE");
return
#ifndef _MSC_VER
EXIT_SUCCESS
#endif
;
}
2009-11-13 14:42:42 補充:
錯誤:s4->clear();
修正:
for ( int I = 0; I < 4; I ++)
{
s4[I].clear();
}
說明:其實不用多寫 s4[I].clear(); 以及 for 迴圈,因為 s4 可以當成區域變數,不用去刻意解構或是清除它,除非有用到指標或是做其他除錯動作才要做清除。
2009-11-16 18:22:05 補充:
你的程式碼有錯誤:s5[i]=s4[i ++];
原因:因為計數器 i 已經由 for 迴圈做累加的動作,你不能要求計數器 i 在指定字串時再做一次累加的動作!
2009-11-19 21:23:17 補充:
錯誤觀念?
我的程式碼違反了哪項規則?
2009-11-20 16:41:03 補充:
又不是在寫大型程式與 win32 視窗程式……