Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说string与int之间转换,希望能够帮助你!!!。
格式: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;
}
ostringstream os; //构造一个输出字符串流,流内容为空
int i = 12;
os << i; //向输出字符串流中输出int整数i的内容
cout << os.str() << endl; //利用字符串流的str函数获取流中的内容
(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;
}
istringstream is("12"); //构造输入字符串流,流的内容初始化为“12”的字符串
int i;
is >> i; //从is流中读入一个int整数存入i中
例题:
一个字符串中只包含字符数字,’(’, ‘)’,
','几种字符,例如:“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;
}
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章