我有一個char *,其中包含year和month可以說YYYYMM。我如何比較MM在01到12的範圍內?我是否必須爲子字符串做atoi並執行它或其他任何事情?如何比較字符數組的子字符串與一些有效範圍?
回答
如果字符串的月份部分的第一個字符是'0',則第二個字符必須在'1'和'9'之間,包括在內纔是有效的。如果第一個字符是'1',則第二個字符必須介於'0'和'2'之間纔有效。任何其他初始字符都是無效的。
在代碼
bool valid_month (const char * yyyymm) {
return ((yyymm[4] == '0') && (yyymm[5] >= '1') && (yyymm[5] <= '9')) ||
((yyymm[4] == '1') && (yyymm[5] >= '0') && (yyymm[5] <= '2'));
}
感謝David和Lou。這很有幫助! – user1001939
除了錯字和假設的有效範圍,這是正確的想法。 – AJG85
你可以做串的的atoi(),或者你可以簡單地比較的ASCII值。例如:
if (buf[4] == '0')
{
// check buf[5] for values between '1' and '9'
}
else if (buf[4] == '1')
{
// check buf[5] for values between '0' and '2'
}
else
{
// error
}
無論哪種方式都是可以接受的。我想這實際上取決於你將如何最終存儲信息(如int或字符串)。
假設你的char *變量稱爲「PSTR」和MM後空終止,你可以這樣做:
int iMon = atoi(pstr + 4);
if ((iMon >= 1) && (iMon <= 12))
{
// Month is valid
}
-1:這種方法會說''20111Z「'和'」19999#「'是有效的。 –
- 1. 如何字符串比較短的字符串字面有效
- 2. 比較與另一個字符串數組中的字符串
- 3. 你如何一個字符串比較字符串數組
- 4. 如何將字符數組與字符串進行比較
- 5. 比較字符串數組
- 6. 如何比較兩個字符串與unicode有一些不同?
- 7. 將字符串與數組中的字符串進行比較
- 8. 字符串與另一個字符串字符的比較
- 9. 比較字符串與數組
- 10. 比較數組列表與字符串
- 11. 如何比較一部分MySQL字符串與PHP字符串?
- 12. 與字符串比較字符串值
- 13. 如何比較字符串與整數?
- 14. 如何比較字符串與整數?
- 15. 如何將一個字符與字符串的所有字符進行比較
- 16. 將字符串與字符串數組進行比較
- 17. 比較2d字符串數組與字符串C++
- 18. 將數組字符串與字符串進行比較
- 19. 比較字符串數組中的一部分字符串
- 20. 字符串比較等效
- 21. 如何比較字符與字符串中的單個字符?
- 22. c中的字符串與字符數組的比較
- 23. 將字符串與C++中的一組字符進行比較
- 24. 是否有一些字符串比較不是逐字符?
- 25. 比較一個字符串數組PHP
- 26. 將數組的字符與字符串進行比較
- 27. 如何將數組中的字符串與字符串進行比較?
- 28. 如何與字符串文字進行字符串比較?
- 29. 字符串與PHP中的子字符串比較?
- 30. 比較字符串與2d字符串數組,只比較數組的最後一個值
在C++中,通常會更好地使用或設計可能從構造一個日期對象各種格式。 – AJG85