这样的字符串该如何定义?
const char *s1 = "\x1FFirst.... ";
const char *s2 = "\x20Fifth.... ";
编译警告:字符值超出范围。
编译器把 First 和 Fifth的首字符也当作16进制 F 的转义字符了。
像这样的情况,该怎么定义才对呢?
[解决办法]
这应该算VC的bug了,我觉得。你这样吧:
const char *s1 = "\x1F " "First.... ";
const char *s2 = "\x20 " "Fifth.... ";
[解决办法]
转意符要用\
'\\ '表示字符 '\ '
[解决办法]
const char *s1 = "\1FFirst.... ";
const char *s2 = "\ Fifth.... ";
楼主是这个意思吗?
[解决办法]
编译器会将两个连续的字符串合成一个。但这步合成的动作会发生在字符串中的转义符被处理之后,因为那样应该就没啥问题了。
[解决办法]
打错了,“因为”-> “因此”。
[解决办法]
steedhorse(晨星)的可行
留下足迹 以后好查找
[解决办法]
居然会有转义识别错误 以前没发现过哦
[解决办法]
const char *s1 = "\x1FFirst.... ";
const char *s2 = "\x20Fifth.... ";
这样行吗?
const char *s1 = "\x01FFirst.... ";
const char *s2 = "\x020Fifth.... ";
[解决办法]
const char *s1 = "\\1FFirst.... ";
const char *s2 = "\\x20 " "Fifth.... ";
这样行吗?
[解决办法]
方法1:
晨星老大的:
const char *s1 = "\x1F " "First.... ";
方法2:
不要使用 16进制转义,
使用直接字符或者 8进制转义
[解决办法]
sprintf可以么?或strcat...
[解决办法]
8 进制转义:
const char *s1 = "\x1FFirst.... ";
const char *s2 = "\x20Fifth.... ";
==》
const char *s1 = "\37First.... ";
const char *s2 = "\40Fifth.... ";
[解决办法]
strcat( "\x20 ", "Fifth.... ");
[解决办法]
char *t = new char(100);
strcpy(t, "\x41 ");
cout < <t < <endl;//A
char *tt = "Fist ";
cout < <tt < <endl;//Fist
strcat(t,tt);
cout < <t < <endl;//AFist
char *ttt = "\x41Fist ";
cout < <ttt < <endl;//ist
[解决办法]
steedhorse(晨星) ( ) 信誉:141 Blog 2007-4-2 13:41:57 得分: 0
这应该算VC的bug了,我觉得。你这样吧:
const char *s1 = "\x1F " "First.... ";
const char *s2 = "\x20 " "Fifth.... ";
-----------------------------
^_^ 好办法~~
[解决办法]
steedhorse(晨星) ( )
GCC也有这样的问题
------解决方案--------------------
对,8进制转义总归不会有问题吧?偶没试,楼主可以试试。