C++基本数据类型转换char(char*),int和string

1.string和int

string-int采用标准库中atoi函数。
但是由于atoi函数要求的参数是char所以调用string的c_str函数将string转变为char

figures.get(i-1) = atoi(figures.get(i-1).c_str())*atoi(figures.get(i+1).c_str());

int-string采用标准库中的to_string函数

figures.get(i-1) = to_string(atoi(figures.get(i-1).c_str())*atoi(figures.get(i+1).c_str()));

补充:string的substr函数

  1. 形式:s.substr(pos, n)包含pos不包含n

  2. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

  3. 补充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

string和char

string-char
不存在string转变为char,但可以将string-char*
除了上边提到的string的c_str函数。还有调用 string 的 data 函数 。
char-string
不可以。
只是可以将char*直接赋值给string对象。

int和char

加减乘除的ASCII码
C++基本数据类型转换char(char*),int和string_第1张图片char-int十分简单
利用ASCII码,即可,用char+‘0’就可以得到数字char对应的int值。

int main(){
	
	int a;
	char s = '8';
	
	a = s-'0';
	
	cout<<a;
	
	
	
	
	
	return 0;
} 

int-char
用int+‘0’

    int t ;
    cin>>t;

    char a = t+'0';

    cout<<a;

如果不溢出char会对应为ASCII码上int所在代表的字符。

#include
using namespace std;

int main(){
	
	int a;
	char s = '8';
	
	a = s-'0';
	
	cout<<a<<endl;
	
	char s2 = 35;
	
	cout<<s2<<endl;
	
	
	
	
	
	return 0;
} 

如果直接用int给char赋值,会得到int对应的ASCII码。

    int t ;
    cin>>t;

    char a = t;

    cout<<a;

4)char*和string之间的转换:
可以看到char *指向的如果不是空,那么char 可以自动转化为string,把char指向的内容复制了一份赋给str。
c_str把c++中的string类转换为c风格字符串:

    char *ch = (char*)str.c_str();

//    cout<

你可能感兴趣的:(C++,基本数据类型)