[C/C++] °ÑÒ»¸öÕûÐÍÕûÊýת³É×Ö·û´®
ÎÊÌâÃèÊö£ºÐ´Ò»¸öº¯Êý£¬½ÓÊÜÒ»¸öÕûÊý£¨¼Ù¶¨ÓÃint±íʾ£©£¬Êä³ö¸ÃÕûÊýµÄ×Ö·û´®ÐÎʽ¡£²ÉÓÃÈçϺ¯ÊýÔÐÍ£º
void itoa ( int val, char* buf );
ÕâÀï¼Ù¶¨buf×ã¹»´óÒÔÈÝÄÉÈκÎintÀàÐÍÊýÖµµÄ×Ö·û´®¡£
Õâ¸öÎÊÌ⣬³õ¿´ºÃÏñûÓÐʲôÄѶȡ£Èç¹ûÊÇ0£¬¾ÍÖ±½ÓÊä³ö'0'£»Èç¹ûÊÇÕýÊý£¬¾Íͨ¹ýÈ¡Ä£(%)ºÍÇóÉÌ(/)ÔËËã¿ÉÒÔÖðλȡµÃ¸ÃÕûÊýµÄÊý×Ö£¬²¢°ÑËüÃǷŵ½bufÖÐÈ¥£»Èç¹ûÊǸö¸ºÊý£¬¾ÍÏÈת³ÉÕýµÄ£¬È»ºóÔÚ×îºóÊä³öʱ¼ÓÈ븺ºÅ¡£°´ÕÕÕâ¸ö˼·£¬¿ÉÒÔдÏÂÈçÏ´úÂ룺
void itoa_flawed(int val, char* buf)
{
// deal with special case
if(val == 0)
{
buf[0] = '0';
buf[1] = '\0';
return;
}
bool negative = (val < 0);
int abs_val = negative ? -val : val;
unsigned int char_cnt = 0;
while(abs_val > 0)
{
buf[char_cnt] = abs_val % 10 + '0';
char_cnt ++;
abs_val = abs_val / 10;
}
if(negative) buf[char_cnt++] = '-';
//reverse the string
unsigned int i = 0;
while(i < char_cnt / 2)
{
char temp = buf[i];
buf[i] = buf[char_cnt-i-1];
buf[char_cnt-i-1] = temp;
i++;
}
buf[char_cnt] = '\0';
}
Ò»Çп´ÆðÀ´¶¼Ã»ÓÐÎÊÌâ¡£µ«ÊÇ£¬Èç¹ûÎÒÃÇÕâÑùµ÷Óøú¯ÊýµÄ»°£¬²Â²Â»áÊä³öʲô£º
char buf[40];
itoa_flawed(1 << 31,buf);
cout<<buf;
ÎÒÃǵõ½µÄÊÇ"-"¡£ÕâÊÇΪʲôÄØ£¿´ó¼ÒÇë×¢ÒâµÚ11ÐдúÂë¡£µ±ÎÒÃÇÇóÒ»¸ºÊýµÄ¾ø¶Ôֵʱ£¬Èç¹û»¹ÊÇÓÃÔÀ´´óСµÄÓзûºÅÀàÐÍʱ£¬¿ÉÄÜ»á²úÉúÒç³ö£¡ÎÒÃÇÖªµÀ£¬intÀàÐÍÖ»Äܱíʾ-231
~ 231
-1
Ö®¼äµÄÊýÖµ¡£Èç¹ûÎÒÃǶÔ-231
Çó¾ø¶ÔÖµ²¢°ÑËü´æ·Åµ½intÀàÐ͵ıäÁ¿ÖУ¬»á·¢ÉúʲôÇé¿ö£¿·ÖÎöµ½ÕâÀ´ó¼Ò¶¼Ó¦¸ÃÇå³þÁË°É£¡
Õâ¸öbugÊǺÜÒþ±ÎµÄ¡£ÎÒÔÚÍøÉÏ¿´µ½µÄ´úÂë»ù±¾É϶¼ºÍÉÏÃæ¸ø³öµÄ²î²»¶à£¬Ã»Óп¼ÂÇÕâ¸ö¿ÉÄܵÄÒç³öÎÊÌâ¡£ÐÞÕýµÄ°ì·¨£¬¾ÍÊÇÓøü´óµÄÀàÐÍÀ´´æ·Å¾ø¶ÔÖµ¡£¹Û²ìµ½¾ø¶ÔÖµÊǷǸºµÄ£¬ÎÒÃÇ¿ÉÒÔÓÃÒ»¸öunsigned int
À´±íʾ¾ø¶ÔÖµ£¬ÕâÑù¾Í²»»áÓÐÎÊÌâÁË¡£
Õâ¸öÌâÄ¿¸øÎÒµÄÆôʾÊÇ£¬ËäÈ»¿´ÆðÀ´¼òµ¥µÄÌâÄ¿£¬Ò²¿ÉÄÜÓкܴóµÄÏÝÚå¡£Èç¹ûÕâÊÇÒ»µÀÃæÊÔÌâµÄ»°£¬¹À¼ÆÍêÈ«×ö¶ÔµÄ²»¶à£¬¿ÉÄÜÒ²°üÀ¨ÏÖ³¡µÄÎÒÔÚÄÚ¡£
Ïà¹ØÎĵµ£º
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
http://developer.51cto.com 2008-12-29 09:52 ØýÃû ÖйúITʵÑéÊÒ ÎÒÒªÆÀÂÛ(0)
CÓïÑÔÖУ¬staticµÄ×ÖÃæÒâ˼ºÜÈÝÒ×°ÑÎÒÃǵ¼ÈëÆç;¡£±¾ÎĽ«¶ÔC/C++ÖÐStatic½øÐÐÏêÊö¡£
1.ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ ......
1¡¢Xerces-C++ÊÇʲô£¿
Xerces-C++ µÄÇ°ÉíÊÇ IBM µÄ XML4C ÏîÄ¿¡£XML4C ºÍ XML4J ÊÇÁ½¸ö²¢ÁеÄÏîÄ¿£¬¶ø XML4J ÊÇ Xerces-J——Java ʵÏÖ——µÄÇ°Éí¡£IBM ½«ÕâÁ½¸öÏîÄ¿µÄÔ´´úÂëÈÃÓë Apache Èí¼þ»ù½ð»á(Apache Software Foundation)£¬ËûÃǽ«Æä·Ö±ð¸ÄÃûΪ Xerces-C++ º ......
cÓïÑԺ궨ÒåµÄÁ¬½Ó·ûÓÐÄÄЩ
[´ËÎÊÌâµÄÍƼö´ð°¸]
(Ò»)ºê¶¨ÒåÖеÄ## Á¬½Ó·ûÓë# ·û
## Á¬½Ó·ûºÅÓÉÁ½¸ö¾®ºÅ×é³É£¬Æ书ÄÜÊÇÔÚ´ø²ÎÊýµÄºê¶¨ÒåÖн«Á½¸ö×Ó´®(token)Áª½ÓÆðÀ´£¬´Ó¶øÐγÉÒ»¸öеÄ×Ó´®¡£µ«Ëü²»¿ÉÒÔÊǵÚÒ»¸ö»òÕß×îºóÒ»¸ö×Ó´®¡£ËùνµÄ×Ó´®(token)¾ÍÊÇÖ¸±àÒëÆ÷Äܹ»Ê¶±ðµÄ×îСÓï·¨µ¥Ôª¡£¾ßÌåµÄ¶¨ÒåÔÚ±àÒëÔÀíÀïÓÐÏ꾡µÄ ......
SQLite¹Ù·½ÍøÕ¾Àý×Ó£º
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
i ......
ÔÚÍøÉÏÕÒµ½µÄÒ»¸ö³ÌÐò
[c]
#include <stdio.h>
#include <sys/types.h>
#include <regex.h>
/* È¡×Ó´®µÄº¯Êý */
static char* substr(const char*str,unsigned start, unsigned end)
{
unsigned n = end - start;
static char stbuf[256]; ......