直接像数组一样取值char ch=str[i],或者char ch=str.at(i)
string str="this is a test";
char ch;
for(int i=0;i
直接字符相加就可以实现
string str="";
char ch;
while((ch=cin.get())!='\n')
{
str+=ch;
}
Solution 1 利用stringstream类
stringstream sstr(str);
int x;
sstr >> x;//(即从sstr中提取数据)
Solution 2 利用C中的sscanf函数
char str[] = "15.455";
int i;
float fp;
sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
//打印
printf( "Integer: = %d ", i+1 );
printf( "Real: = %f ", fp+1 );
return 0;
Solution 3 利用 C标准库atoi, atof, atol, atoll(C++11标准) 函数将字符串转换成int,double, long, long long 型
C语言库函数名: atoi
功 能: 把字符串转换成整型数
函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。
原型: int atoi(const char *nptr);
需要用到的头文件: #include
string str;
getline(cin,str,'\n');
int num=atoi(str.c_str());
Solution 4.如果对于"12 34 45#78?910"让提取数字,这时就用到了字符串剪切函数strtok ();
#include
#include
/*对于输入1,2,3,4,5,6...,输出1 2 3 4 5 6...*/
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int dp[1000],i=0;
cin.tie(0);
cout.tie(0);
cout<<"One way:"<>dp[i++]&&cin.get()!='\n');
for(int j=0;j
Solution 1 利用stringstream类
stringstream sstr;
int x;
sstr << x;
string str = sstr.str();
缺点:处理大量数据转换速度较慢。stringstream不会主动释放内存,如果要在程序中用同一个流,需要适时地清除一下缓存(用stream.str("")和stream.clear()).
Solution 2 利用C中的sprintf函数
int num;
cin>>num;
char ch[100];
sprintf(ch,"%d",num);
Solution 3 利用C中的 itoa函数
char *itoa(int value, char *string, int radix);
value: 待转化的整数。
radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string: 保存转换后得到的字符串。
返回值:
char * : 指向生成的字符串, 同*string。
备注:该函数的头文件是"stdlib.h"
Solution 4 直接利用to_string()函数
int num;
cin>>num;
string str="";
str+=to_string(num);
最简单的方式就是直接转换
char ch;
cin.get(ch);
if(isdigit(ch))
{
int num=ch-'0';
cout<
int num;
cin>>num;
char ch=num+'0';//9->'9'
参考:https://www.cnblogs.com/happygirl-zjj/p/4633789.html
欢迎补充!!