解题思路:
写这篇题解主要是想掌握一下:
一、整型数字直接转化为字符串 二、字符串直接转换字符串数组。
一:利用stringstream:
数字转换为字符串:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
string s;
stringstream ss; //定义流ss
ss<<n; //将数字往流里面倒
ss>>s; //将流ss转换为字符串
return 0;
}
同理可以反过来,将字符串转换为数字:
#include<iostream>
using namespace std;
int main()
{
int n;
string s;
cin>>s;
stringstream ss; //定义流ss
ss<<s; //将字符串往流里面倒
ss>>n; //将流ss转换为数字
return 0;
}
注意事项:记得加头文件#include<sstream>
二、字符串直接转换字符串数组
两个点:
1、string中c_str()的用法
c_str()函数返回一个指向字符串的指针常量,内容是字符串对象的当前内容加上一个额外的终止字符(‘\ 0’)。
这是为了与c语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成C中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。
错误用法:
const char* c;
string s="test";
c = s.c_str();
原因:因为c_str()返回的是一个临时指针,s对象被析构,其内容被处理,所以c最后指向是垃圾内存,内容就不确定了。
修正:
char c[20] = {0};
string s="test";
strcpy(c,s.c_str());
2、strncpy()
声明:
char *strncpy(char *dest, const char *src, size_t n)
把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
所以说:strncpy(目标 , 源 , 长度);
例:
string s="0123456789";
char op[15];
strncpy(op,s.c_str(),s.length()+1);//s.c_str() 字符强制转化为字符串函数
//长度必须加1,\0还占一个位置
注意:记得加头文件#include<string>
参考代码:
#include<iostream>
#include<sstream>
#include<string.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
string s;
stringstream ss;
ss<<n;
ss>>s; //数字转换为字符串
cout<<s.length()<<endl;
char a[6];
strncpy(a,s.c_str(),s.length()+1); //字符串转换为字符串数组
//接下来按要求输出即可
for(i=0;i<s.length()-1;i++)
cout<<a[i]<<" ";
cout<<a[i]<<endl;
for(i=s.length()-1;i>=0;i--)
cout<<a[i];
return 0;
}
ps:建议还是最先掌握用取余的方法来进行分离数字来解这道题,这是基础。
第一次写题解,不足之处请多指教。
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复