0
所以我運行這段代碼打開一個文件並比較一個本地字符與存儲在文件中的值,但由於某種奇怪的原因,strcmp告訴我「15」等於「17」。 。 有什麼想法嗎?這很奇怪,因爲該問題只發生在第17行。這裏是相關的代碼:strcmp比較不正確
...
string line;
size_t found;
size_t nextFound;
char ID[11];
char storage_ID[11] = "15";
//Open the file
ifstream file(FILE);
if (file.is_open())
{
for (int count = 0; count < 25; count++)
{
getline(file,line);
if (file.eof())
{
return;
}
//store object ID
found = line.find(":");
strcpy(ID[count],line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found
if(strcmp(storage_ID,ID[count])==0)
{
foundID = true;
}
else
{
foundID = false;
}
而這裏的文件是什麼樣子:
...
1:1234567890:101:A123B4CD
2:2234567890:102:B123B4CD
3:3234567890:103:C123B4CD
(this goes on for 20 lines)
感謝您的幫助!
你有[ *未定義的行爲*](http://en.wikipedia.org/wiki/Undefined_b ehavior)在你的代碼中,比較一個字符串與單個字符。與上面一行中的「strcpy」調用相同。 –
你也把'strcpy'轉換成'char'。 'ID'應該是一串字符串嗎? –
另外,爲什麼你在C++程序中使用C風格的字符串,其中你已經在使用C++'std :: string'類來處理一些變量? –