स्ट्रिंग अस्थायी मेरे डीबगर से "ZERO: \ t.WORD \ t1" के बराबर है। (मेरे फ़ाइल की पहली पंक्ति)इस्लाफा (<mychar>) == सच का गलत मूल्यांकन?
string temp = RemoveWhiteSpace(data);
int i = 0;
if (temp.length() > 0 && isalpha(temp[0]))
cout << "without true worked" << endl;
if (temp.length() > 0 && isalpha(temp[0]) == true)
cout << "with true worked" << endl;
यह अगर अस्थायी का पहला वर्ण कोई a-z, A-Z है की जाँच करने के लिए अपने कोड है। पहला अगर कथन सत्य का मूल्यांकन करेगा और दूसरा झूठा होगा। क्यूं कर?!?!?! मैंने इसे "temp.length()> 0 & &" के बिना भी कोशिश की है "और यह अभी भी झूठी मूल्यांकन करता है। यह सिर्फ "== सच" से नफरत करता है। केवल एक चीज जिसे मैं सोच सकता हूं वह है कि isalpha() रिटर्न! = 0 और सच == 1. फिर, आप isalpha() == 2! = 1. प्राप्त कर सकते हैं, लेकिन, मुझे नहीं पता कि सी ++ क्या है ... अजीब।
बीटीडब्ल्यू, मुझे यह जानने की आवश्यकता नहीं है कि "== सत्य" तार्किक रूप से व्यर्थ है। मुझे पता है।
उत्पादन
without true worked
उबंटू 9.10 पर जीएनयू जीसीसी
आप की कोशिश की 'अदालत << isalpha (अस्थायी [0]) << endl है;'? –
"मुझे नहीं पता कि सी ++ वह है ... अजीब"। एक संदर्भ मैनुअल से परामर्श आपको एक विचार देगा। cplusplus.com कहता है, "शून्य से अलग मूल्य (यानी, 'सत्य') यदि वास्तव में * सी * एक वर्णमाला पत्र है"। यही कारण है कि आपको cplusplus.com का उपयोग नहीं करना चाहिए: सी ++ में 'सत्य' का अर्थ सी मानक में वर्णित "सत्य" जैसा नहीं है, जिसकी उन्होंने प्रतिलिपि बनाई है। opengroup.org कहता है, "यदि Iscpha() फ़ंक्शन गैर-शून्य लौटाएगा यदि सी वर्णमाला वर्ण है", जो बेहतर है। –
इसके अलावा, इस आइसल्फा फ़ंक्शन के बीच '' या '', और फ़ंक्शन टेम्पलेट 'std :: isalpha'' 'में फ़ंक्शन टेम्पलेट के बीच भ्रम से सावधान रहें। उत्तरार्द्ध 'बूल' देता है, इसलिए यदि आप उसे बुला रहे थे तो आपका कोड काम करेगा। –