1 #include<stdio.h> 2 #include<stdlib.h> 3 int sw(char *a){ 4 int i=0,c=0; 5 while(a[i]){ 6 if(a[i]>='0'&&a[i]<='9') 7 c=c*10+a[i]-'0'; 8 i++; 9 } 10 if(a[0]=='-') 11 c=-c; 12 return c; 13 } 14 int main(){ 15 char a[99],b[99]; 16 int a1,b1,c[99],i=0; 17 while(scanf("%s %s",a,b)!=EOF) 18 { 19 a1=sw(a); 20 b1=sw(b); 21 22 c[i]=a1+b1; 23 i++; 24 } 25 for(int j=0;j<i;j++) 26 printf("%d\n",c[j]); 27 return 0; 28 }
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 //freopen("a.txt","r",stdin); 7 char inA[20]={0}; 8 char inB[20]={0}; 9 while(cin>>inA>>inB) 10 { 11 string strA(inA); 12 string strB(inB); 13 strA.erase(remove(strA.begin(),strA.end(),','),strA.end()); 14 strB.erase(remove(strB.begin(),strB.end(),','),strB.end()); 15 int a = atoi(strA.c_str()); //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 16 int b = atoi(strB.c_str()); //atoi()会将字符串转换为整型数 17 cout<<a+b<<endl; 18 } 19 // getchar(); 20 21 22 return 0; 23 }
关于如下两行代码的使用很让人疑惑:
接下来就举例子来说明一下:
1 #include <iostream> 2 3 #include <list> 4 5 #include <algorithm> 6 7 using namespace std; 8 9 int main() 10 11 { 12 13 list<int> coll; 14 15 //insert elements from 6 to 1 and 1 to 6 16 17 for (int i=1; i<=6; ++i) { 18 19 coll.push_front(i); 20 21 coll.push_back(i); 22 23 } 24 25 //print all elements of the collection 26 27 cout << "pre: "; 28 29 copy (coll.begin(), coll.end(), ostream_iterator<int> (cout," ")); 30 31 cout << endl; 32 33 //remove all elements with value 3 34 35 remove (coll.begin() , coll.end(), 3); 36 37 //print all elements of the collection 38 39 cout << "post: "; 40 41 copy (coll.begin(), coll.end(), ostream_iterator<int> (cout," ")); 42 43 cout << endl; 44 45 }
执行remove动作后,值为3的节点还在,只是里面的值被后续节点的值覆盖了,整个容器的长度没有改变。
向左转|向右转
这样调整一下,就达到目的了。
list<int>::iterator end = remove (coll.begin(), coll.end(), 3);
coll.erase (end, coll.end());
c_str()的用法:
语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: char* c; string s="1234"; c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理 应该这样用: char c[20]; string s="1234"; strcpy(c,s.c_str()); 这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作 再举个例子 c_str() 以 char* 形式传回 string 内含字符串 如果一个函数要求char*参数,可以使用c_str()方法: string s = "Hello World!"; printf("%s", s.c_str()); //输出 "Hello World!"
atoi函数的使用:
原型:int atoi (const char *nptr)
用法:#include <stdlib.h>
功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回。
说明:atoi()函数返回转换后的整型数。
可参考:http://blog.csdn.net/youbang321/article/details/7888138
举例:
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- char a[] = "-100";
- char b[] = "456";
- int c = 0;
- c = atoi(a) + atoi(b);
- printf("c = %d\n",c);
- }
结果:
微信公众号:
猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。