文字列をさまざまなセクションに分割して解析する関数がありますが、文字列を char* に変換すると、不正な形式の出力が得られます。
int parseJob(char * buffer)
{ // Parse raw data, should return individual jobs
const char* p;
int rows = 0;
for (p = strtok( buffer, "~" ); p; p = strtok( NULL, "~" )) {
string jobR(p);
char* job = &jobR[0];
parseJobParameters(job); // At this point, the data is still in good condition
}
return (1);
}
int parseJobParameters(char * buffer)
{ // Parse raw data, should return individual job parameters
const char* p;
int rows = 0;
for (p = strtok( buffer, "|" ); p; p = strtok( NULL, "|" )) { cout<<p; } // At this point, the data is malformed.
return (1);
}
最初の関数が 2 番目の関数を呼び出す間に何が起こるかはわかりませんが、データの形式が正しくありません。
与えられたコード例からわかるように、string を char* に変換する同じメソッドが使用され、正常に動作します。
私は Visual Studio 2012/C++ を使用しています。ガイダンスとコード例は大歓迎です。