写真机怎么校准喷头喷头怎么拿

在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串。字符串是以&\0&作为结束符。C/C++提供了丰富的字符串处理函数,下面列出了几个最常用的函数。
&&● 字符串输出函数puts。
&&● 字符串输出函数gets。
&&● 字符串连接函数strcat。
&&● 字符串复制函数strcpy。
&&● 测字符串长度函数strlen。
字符串是面试的重点考查部分的相关知识,通过考查字符串的相关知识可以考察程序员的编程规范以及编程习惯。并且其中包括了许多知识点,例如内存越界、指针与数组操作等。许多公司在面试时会要求应聘者写一段复制字符串或字符串子串操作的程序。本章列举了一些与字符串相关的面试题,有些题目要求较高的编程技巧。
6.1&&数字与字符串的转化
应聘时经常出现数字与字符串之间转化的问题,面试官通过这类题目来考察应聘者能力,例如是否熟悉常用的库函数,是否了解ASCII码以及是否了解字符串的存储格式等。
6.1.1&&数字转化为字符串
面试例题1:使用库函数将数字转换为字符串。
考点:C库函数中数字转换为字符串的使用。
出现频率:★★★
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
&&● itoa():将整型值转换为字符串。
&&● ltoa():将长整型值转换为字符串。
&&● ultoa():将无符号长整型值转换为字符串。
&&● gcvt():将浮点型数转换为字符串,取四舍五入。
&&● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
&&● fcvt():指定位数为转换精度,其余同ecvt()。
还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢。下列程序演示了如何使用itoa()函数和gcvt()函数:
1&&&&# include &stdio.h&
2&&&&# include &stdlib.h&
4&&&&int main ()
6&&&&&&&&int num_int = 435;
7&&&&&&&&double num_double = 435.10f;
8&&&&&&&&char str_int[30];
9&&&&&&&&char str_double[30];
11&&&&&&&itoa(num_int, str_int, 10);&&//把整数num_int转成字符串str_int
12&&&&&&&gcvt(num_double, 8, str_double);&&//把浮点数num_double转成字符串str_double
14&&&&&&&printf("str_int: %s\n", str_int);
15&&&&&&&printf("str_double: %s\n", str_double);
17&&&&&&&return 0;
程序输出结果:
1&&&&str_int: 435
2&&&&str_double: 435.10001
&&● 代码第11行中的参数10表示按十进制类型进行转换,转换后的结果是&435&,如果按二进制类型进行转换,则结果为&&。
&&● 代码第12行中的参数8表示精确位数,这里得到的结果是&435.10001&。
可以使用atoi系列函数把数字转换成字符串。
面试例题2:不使用库函数将整数转换为字符串。
考点:数字转换为字符串,理解相关ASCII码。
出现频率:★★★★
如果不使用atoi或sprintf等库函数,可以通过把整数的各位上的数字加&0&转换成char类型并存到字符数组中。但是要注意,需要采用字符串逆序的方法。如以下程序所示:
1&&&&#include &iostream&
4&&&&void int2str(int n, char *str)
6&&&&&&&&char buf[10] = "";
7&&&&&&&&int i = 0;
8&&&&&&&&int len = 0;
9&&&&&&&&int temp = n & 0 ? -n:&&// temp为n的绝对值
11&&&&&&&if (str == NULL)
12&&&&&&&{
13&&&&&&&&&&&
14&&&&&&&}
15&&&&&&&while(temp)
16&&&&&&&{
17&&&&&&&&&&&buf[i++] = (temp % 10) + '0';&&//把temp的每一位上的数存入buf
18&&&&&&&&&&&temp = temp / 10;
19&&&&&&&}
21&&&&&&&len = n & 0 ? ++i:&&//如果n是负数,则多需要一位来存储负号
22&&&&&&&str[i] = 0;&&&&&&&&&&&&//末尾是结束符0
23&&&&&&&while(1)
24&&&&&&&{
25&&&&&&&&&&&i--;
26&&&&&&&&&&&if (buf[len-i-1] ==0)
27&&&&&&&&&&&{
28&&&&&&&&&&&&&&&
29&&&&&&&&&&&}
30&&&&&&&&&&&str[i] = buf[len-i-1];&&//把buf数组里的字符拷到字符串
31&&&&&&&}
32&&&&&&&if (i == 0 )
33&&&&&&&{
34&&&&&&&&&&&str[i] = '-';&&&&&&&&&&//如果是负数,添加一个负号
35&&&&&&&}
38&&&int main()
40&&&&&&&int nN
41&&&&&&&char p[10];
43&&&&&&&cout && "Please input an integer:";
44&&&&&&&cin && nN
45&&&&&&&cout && "output: " ;
46&&&&&&&int2str(nNum, p);&&&&&&&&//整型转换成字符串
47&&&&&&&cout&& p &&
49&&&&&&&return 0;
程序中的int2str函数完成了int类型到字符串类型的转换。在代码第46行对int2str函数做了测试。程序的执行结果如下所示:
Please input an integer: 1234
Output: 1234
如果输入的是个负数,程序执行结果如下所示:
Please input an integer: -1234
Output: -1234
接下来对int2str函数的实现进行分析。
&&● 代码第9行,把参数n的绝对值赋给temp,以后在计算各个位的整数时用temp,这样保证在负数情况下取余不会出现问题。
&&● 代码第11~第14行判断str的有效性,str不为NULL。
&&● 代码第15~第19行的while循环中,将n的各个位存放到局部数组buf中,存放的顺序与整数顺序相反。例如n为整数123&456,while循环结束后buf应为&654&321&。
&&● 代码第21行计算转换后字符串的长度len,如果是负数,长度应该再加1。
&&● 代码第22~第31行把数组buf中的非0元素逆向复制到参数str指向的内存中,如果n是负数,则str指向的第一个内存存放负号。
6.1.2&&字符串转化为数字
面试例题3:使用库函数将字符串转换为数字。
考点:C库函数中字符串转换为数字的使用。
出现频率:★★★★
与上节数字转换为字符串类似,C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。以下列举了各函数的方法及其说明。
&&● atof():将字符串转换为双精度浮点型值。
&&● atoi():将字符串转换为整型值。
&&● atol():将字符串转换为长整型值。
&&● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
&&● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
&&● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
以下程序演示如何使用atoi ()函数和atof ()函数。
1&&&&# include &stdio.h&
2&&&&# include &stdlib.h&
4&&&&int main ()
6&&&&&&&&int num_
7&&&&&&&&double num_
8&&&&&&&&char str_int[30] = "435";&&&&&&&&&//将要被转换为整型的字符串
9&&&&&&&&char str_double[30] = "436.55";&&//将要被转换为浮点型的字符串
11&&&&&&&num_int = atoi(str_int);&&&&&&&&&&//转换为整型值
12&&&&&&&num_double = atof(str_double);&&//转换为浮点型值
14&&&&&&&printf("num_int: %d\n", num_int);
15&&&&&&&printf("num_double: %lf\n", num_double);
17&&&&&&&return 0;
输出结果:
num_int: 435
num_double: 436.550000
面试例题4:不使用库函数将字符串转换为数字。
考点:字符串转换为数字时,对相关ASCII码的理解。
出现频率:★★★★
程序代码如下:
1&&&&#include &iostream&
4&&&&int str2int(const char *str)
6&&&&&&&&int temp = 0;
7&&&&&&&&const char *ptr =&&//ptr保存str字符串开头
9&&&&&&&&if (*str == '-' || *str == '+')&&//如果第一个字符是正负号,
10&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&//则移到下一个字符
11&&&&&&&&&&&str++;
12&&&&&&&}
13&&&&&&&while(*str != 0)
14&&&&&&&{
15&&&&&&&&&&&if ((*str & '0') || (*str & '9'))&&//如果当前字符不是数字
16&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&//则退出循环
17&&&&&&&&&&&&&&&
18&&&&&&&&&&&}
19&&&&&&&&&&&temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
20&&&&&&&&&&&str++;&&&&&&//移到下一个字符
21&&&&&&&}&&&
22&&&&&&&if (*ptr == '-')&&&&&//如果字符串是以&-&开头,则转换成其相反数
23&&&&&&&{
24&&&&&&&&&&&temp = -
25&&&&&&&}
30&&&int main()
32&&&&&&&int n = 0;&&&
33&&&&&&&char p[10] = "";
35&&&&&&&cin.getline(p, 20);&&&//从终端获取一个字符串
36&&&&&&&n = str2int(p);&&&&&&//把字符串转换成整型数
38&&&&&&&cout && n &&
40&&&&&&&return 0;
程序执行结果:
输入:1234
输出:1234
输入:-1234
输出:-1234
输入:+1234
输出:1234
程序中的str2int函数作用是将字符串转换成整数。这个函数的转换过程与例题2中的int2str函数相比更加简单,它只需要做一次while循环(代码第13行)就能把数值大小计算出来,如果结果是负数,就加一个负号。
一.将CString转为CTime的几种方法
CString &&timestr &&= &&"日"; &&&int &&a,b,c &&; &&&sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c); &&&CTime &&time(a,b,c,0,0,0);&&&&--------or - ---------------------&CString &&s(" &&19:06:23"); &&&int &&nYear, &&nMonth, &&nDate, &&nHour, &&nMin, &&nS &&&sscanf(s, &&"%d-%d-%d &&%d:%d:%d", &&&nYear, &&&nMonth, &&&nDate, &&&nHour, &&&nMin, &&&nSec); &&&CTime &&t(nYear, &&nMonth, &&nDate, &&nHour, &&nMin, &&nSec);---- or ------------------------CString &&timestr &&= &&"日"; &&&int &&year,month, &&&BYTE &&tt[5]; &&&//get &&year &&&memset(tt, &&0, &&sizeof(tt)); &&&tt[0] &&= &&timestr[0]; &&&tt[1] &&= &&timestr[1]; &&&tt[2] &&= &&timestr[2]; &&&tt[3] &&= &&timestr[3]; &&&year= &&atoi((char &&*)tt); &&&&&&//get &&month &&&memset(tt, &&0, &&sizeof(tt)); &&&tt[0] &&= &&timestr[6]; &&&tt[1] &&= &&timestr[7]; &&&month &&= &&atoi((char &&*)tt); &&&&&&//get &&day &&&memset(tt, &&0, &&sizeof(tt)); &&&tt[0] &&= &&timestr[10]; &&&tt[1] &&= &&timestr[11]; &&&&&&CTime &&time(year,month,day,0,0,0);
从上面来看,很明显使用sscanf()函数的优势.
二.将CTIme转换为CString的方法:
CTime&&tmSCan =&CTime::GetCurrentTime();
CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'");
这样得到的日期时间字符串就是以" 23:30:59"的格式.这是不是很方便呢?
&//取得CTime中的日期&CString cstrDate = tmScan.Format("%Y-%m-%d");
&//取得CTime中的时间&CString cstrTime = tmScan.Format("%H:%M-%S");
&&&&&&&&&&sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:
&更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》
time_t t = time(0);
&&&&&&//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。
三,字符串转换为数值类型
将字符串"20.0E6"转换为数字
1,sscanf("20.0e5","%d",&x);
2,atof("20.0E6");
许多人用atoi(), atof() 和这个&家族&中的其它函数. 它们方便应用,但是有一个重要的缺点:在转换失败和转换字符串"0"时都返回0, 这样使得一致性错误检查变得几乎不可能。 为了完整性我们给出了小段代码:
代码:--------------------------------------------------------------------------------&&&const char* str_int = "777";&&&const char* str_float = "333.3";&&&int i = atoi(str_int);&&&float f = atof(str_float);--------------------------------------------------------------------------------
一个更好的办法:
更有一点复杂, 更遗一致的办法是利用sscanf()
代码:--------------------------------------------------------------------------------&&&const char* str_int = "777";&&&const char* str_float = "333.3";&&&&&&&&&if(EOF == sscanf(str_int, "%d", &i)){&&&&&&//错误&&&}&&&if(EOF == sscanf(str_float, "%f", &f)){&&&&&&//错误&&&}--------------------------------------------------------------------------------
Since sscanf() takes a const char* parameter, you can directly use a CString with it:因为sscanf()用const char* 作为参数, 所以你可以直接用CString作参数:
代码:--------------------------------------------------------------------------------&&&CString str_int("777");&&&if(EOF == sscanf(str_int, "%d", &i)){&&&&&&//error&&&}--------------------------------------------------------------------------------
小心格式描述符(如本例中的"%d")。 sscanf()没有办法检查格式描述符与传递变量的类型匹配与否。如果不匹配你将得到不可预期的结果。 同样注意sscanf()可以一次从字符串中提取一个或多个数值。 详细信息请查阅MSDN。
如下的例子展示了利用标准C++类的来完成这个任务的模板函数
代码:--------------------------------------------------------------------------------#include &string&#include &sstream&#include &iostream&
template &class T&bool from_string(T &t,&&&&&&&&&&&&&&&&&const std::string &s,&&&&&&&&&&&&&&&&&std::ios_base & (*f)(std::ios_base&)){&&&std::istringstream iss(s);&&&return !(iss&&f&&t).fail();}
int main(){&&&&&&&&&// from_string()的第三个参数应为如下中的一个&&&// one of std::hex, std::dec 或 std::oct&&&if(from_string&int&(i, std::string("ff"), std::hex)){&&&&&&std::cout&&i&&std::&&&}&&&else{&&&&&&std::cout&&"from_string failed"&&std::&&&}&&&if(from_string&float&(f,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&std::string("123.456"),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&std::dec))&&&{&&&&&&std::cout&&f&&std::&&&}&&&else{&&&&&&std::cout&&"from_string failed"&&std::&&&}&&&return 0;}
四,&int char * float and CString&Covernt
1。 int &-&CString
1) int -&CString
int n = 1;
str.Format("%d",n);
2) CString-&int
CString str = "1";
int n = atoi(str.GetBuffer(0));
2. char* 与CString
1)char*-&CString
char sz[128];
str.Format("%s",sz);
2) CString -& char*
//int nLength = str.GetLength();
char* sz = str.GetBuffer(0);
3. float&-&CString
1)float-&CString
float f = 0.0;
str.Format("%f",f);
2) CString-&float
CString str = "0.0";
float f = atof(str.GetBuffer(0));
阅读(...) 评论()Java入门第三季
第1章 异常与异常处理
第2章 认识 Java 中的字符串
第3章 Java 中必须了解的常用类...
第4章 Java 中的集合框架(上)...
第5章 Java 中的集合框架(中)...
第6章 Java 中的集合框架(下)...
第7章 综合实战
在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。
其中,基本类型转换为字符串有三种方法:
1. 使用包装类的 toString() 方法
2. 使用String类的 valueOf() 方法
3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串
再来看,将字符串转换成基本类型有两种方法:
1. 调用包装类的 parseXxx 静态方法
2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱
PS:其他基本类型与字符串的相互转化这里不再一一列出,方法都类似
在编辑器中完成了基本类型和字符串之间的转换。
运行结果为:
请将 6、12 行代码填写完整
?不会了怎么办
参考代码:
public class HelloWorld {
public static void main(String[] args) {
double m = 78.5;
//将基本类型转换为字符串
String str1 =
System.out.println(&m 转换为String型后与整数20的求和结果为: &+(str1+20));
String str = &180.20&;
// 将字符串转换为基本类型
Double a =
System.out.println(&str 转换为double型后与整数20的求和结果为: &+(a+20));
你发的评论可能会是问题?是否将他发到问答中
Java API下载
Copyright (C)
All Rights Reserved | 京ICP备 号-2
本次提问将花费2个积分
你的积分不足,无法发表
本次提问将花费2个积分
继续发表请点击 "确定"js字符串转换成数字与数字转换成字符串的实现方法
字体:[ ] 类型:转载 时间:
本篇文章主要是对js字符串转换成数字与数字转换成字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
js字符串转换成数字
将字符串转换成数字,得用到parseInt函数。parseInt(string) : 函数从string的开始解析,返回一个整数。
举例:parseInt('123') : 返回 123(int);parseInt('1234xxx') : 返回 1234(int);
如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测;
举例 :var i = parseInt('abc');if (isNaN(i)){alert('NaN value');}
同样的parseFloat函数是将字符串转换成浮点数。
举例:parseFloat('31.24abc') : 返回 31.24;
js数字转换成字符串
将字符串转换成数字,得用到String类的toString方法
举例:var i = 10;var s = i.toString();alert(typeof s); //将输出 String
js数字与字符串的区别
js的数字的加法与字符串的连接都是 + 符号, 所以究竟是加还是字符串的连接就取决与变量的类型。
举例:var a = 'abc' + 'xyz'; //a的值为:abcxyz,字符串与字符串是连接var a = 10 + 5; //a的值为:15,数字是加var a = 'abc' + 10; //a的值为:abc10,字符串与数字,自动将10转换成字符串了var a = 'abc' + 10 + 20 + 'cd'; //a的值为:abc1020cdvar a = 10 + 20 + 'abc' + 'cd'; //a的值为:30abccd,可以数字加的先数字加,然后再连接
js字符串转换数字。方法主要有三种
转换函数、强制类型转换、利用js变量弱类型转换。
1. 转换函数:
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
一些示例如下:
parseInt("1234blue"); //returns 1234parseInt("0xA"); //returns 10parseInt("22.5"); //returns 22parseInt("blue"); //returns NaN
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,示例如下:
parseInt("AF", 16); //returns 175parseInt("10", 2); //returns 2parseInt("10", 8); //returns 8parseInt("10", 10); //returns 10如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:parseInt("010"); //returns 8parseInt("010", 8); //returns 8parseInt("010", 10); //returns 10
parseFloat()方法与parseInt()方法的处理方式相似。使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。
下面是使用parseFloat()方法的示例:parseFloat("1234blue"); //returns 1234.0parseFloat("0xA"); //returns NaNparseFloat("22.5"); //returns 22.5parseFloat("22.34.5"); //returns 22.34parseFloat("0908"); //returns 908parseFloat("blue"); //returns NaN
2. 强制类型转换
还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。ECMAScript中可用的3种强制类型转换如下:Boolean(value)——把给定的值转换成Boolean型;Number(value)——把给定的值转换成数字(可以是整数或浮点数);String(value)——把给定的值转换成字符串。用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
可以用下面的代码段测试Boolean型的强制类型转换。
Boolean(""); //false – empty stringBoolean("hi"); //true – non-empty stringBoolean(100); //true – non-zero numberBoolean(null); //false - nullBoolean(0); //false - zeroBoolean(new Object()); //true – object
Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。示例如下:
用  法 结  果Number(false) 0Number(true) 1Number(undefined) NaNNumber(null) 0Number( "5.5 ") 5.5Number( "56 ") 56Number( "5.6.7 ") NaNNumber(new Object()) NaNNumber(100) 100&&
最后一种强制类型转换方法String()是最简单的,示例如下:
var s1 = String(null); //"null"var oNull =var s2 = oNull.toString(); //won't work, causes an error
3. 利用js变量弱类型转换
举个小例子,一看,就会明白了。&script&var str= '012.345 ';var x = str-0;x = x*1;&/script&
上例利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 户外写真机喷头堵了 的文章

 

随机推荐