我有一個函數將字符串分割成不同的部分,然後解析它們,但是當將字符串轉換爲char *時,我得到格式錯誤的輸出。在C++中將字符串轉換爲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);
}
我不知道在調用第二個函數的第一個函數之間會發生什麼,但是它會使數據變形。
正如您從給出的代碼示例中所看到的,使用將字符串轉換爲char *的相同方法並且它工作正常。
我正在使用Visual Studio 2012/C++,任何指導和代碼示例將不勝感激。
你做錯了:) 請參閱http://stackoverflow.com/questions/7352099/stdstring-to-char – Davita
你試過string :: c_str()而不是&jobR [0]?不知道這是否改變了語義。 –