一、int 转换为 string

(1)使用to_string()函数

格式:string str = to_string(number);

需引入头文件:#include<string>

string to_string (int val);

string to_string (long val);

string to_string (long long val);

string to_string (unsigned val);

string to_string (unsigned long val);

string to_string (unsigned long long val);

string to_string (float val);

string to_string (double val);

string to_string (long double val);

举例:

#include<iostream>
#include<string>
using namespace std;

int main() {	
	
	int number = 1001;
	string str = to_string(number);
	cout << str << endl;			//输出:1001

	system("pause");
	return 0;
}
(2)采用sstream中定义的字符串流对象来实现
ostringstream os; //构造一个输出字符串流,流内容为空 
int i = 12; 
os << i; //向输出字符串流中输出int整数i的内容 
cout << os.str() << endl; //利用字符串流的str函数获取流中的内容 

二、string 转换为 int

(1)使用stoi()函数

(stoi == string to int(个人理解))
格式:int number = stoi(str.c_str());
需引入头文件:#include<string>

#include<iostream>
#include<string>
using namespace std;

int main() {	
	
	string str = "1001";
	int number = stoi(str.c_str());
	cout << number << endl;			//输出:1001

	system("pause");
	return 0;
}

(2)采用sstream中定义的字符串流对象来实现
istringstream is("12"); //构造输入字符串流,流的内容初始化为“12”的字符串 
int i; 
is >> i; //从is流中读入一个int整数存入i中
(3)隐式转换

例题:

一个字符串中只包含字符数字,’(’, ‘)’,
','几种字符,例如:“4,(2(3,1),(5,(3)))”表示4在第0层,2在第一层,315在第二层,3在第三层,输出结果为每个元素与所在层数的乘积和。

例子:“100,(1,(8),(1))" 输出:19,0100+11+28 + 21=19;

思路:统计层数和数字即可。
层数规律:遇左括号加1,遇右括号减1;
数字规律:每次遇到一个数字后,遍历后面所有的数字,直到遇到非数字。

int MultplySum(const string& s)
{
    int level = 0;
    int res = 0;
    for (int i = 0; i < s.size(); i++) {
        level += (s[i] == '(') ? 1 : (s[i] == ')' ? -1 : 0); // 遇左括号加1,遇右括号减1;
        int j = 0;
        int tmp = 0;
        while (s[i + j] >= '0' && s[i + j] <= '9') { // 次遇到一个数字后,遍历后面所有的数字,直到遇到非数字
            tmp = tmp * 10 + (s[i + j] - '0'); // 字符转换为数字
            j++
        }
        i += j;
        res += tmp * level;
    }
    return res;
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐