济南川芎网站建设,官网如何做广告推广,无锡整站百度快照优化,wordpress 当前分页阅读导航 字符串处理类一、stoi()#xff08;将字符串转换为整数类型#xff09;二、to_string()#xff08;将整数类型转换为字符串类型#xff09;三、stringstream函数#xff08;将一个字符串按照指定的分隔符进行分词#xff09; 字符串处理类
一、stoi()#xff… 阅读导航 字符串处理类一、stoi()将字符串转换为整数类型二、to_string()将整数类型转换为字符串类型三、stringstream函数将一个字符串按照指定的分隔符进行分词 字符串处理类
一、stoi()将字符串转换为整数类型
在C中可以使用 std::stoi() 函数将字符串转换为整数类型。
示例代码如下
#include iostream
#include stringint main() {std::string str 12345;int num std::stoi(str);std::cout The converted integer is: num std::endl;return 0;
}输出结果为
The converted integer is: 12345std::stoi() 函数接受一个字符串作为参数并尝试将其转换为整数类型。如果转换成功则返回转换后的整数值如果无法进行有效的转换将抛出 std::invalid_argument 或 std::out_of_range 异常。
需要注意的是如果字符串中包含除数字以外的字符或者超出了整数类型的取值范围那么转换将失败。在使用 std::stoi() 函数时要确保输入的字符串符合期望的格式和范围或者进行适当的异常处理。
二、to_string()将整数类型转换为字符串类型
在C中可以使用 std::to_string() 函数将整数类型转换为字符串类型。
示例代码如下
#include iostream
#include stringint main() {int num 12345;std::string str std::to_string(num);std::cout The converted string is: str std::endl;return 0;
}输出结果为
The converted string is: 12345std::to_string() 函数接受一个整数作为参数并返回对应的字符串表示。它将整数转换为相应的十进制字符串。
需要注意的是转换后的字符串对象是一个新的副本原始的整数值并不受影响。
另外如果需要将其他类型的值转换为字符串也可以借助字符串流std::stringstream和输出流操作符来实现。例如
#include iostream
#include string
#include sstreamint main() {int num 12345;std::stringstream ss;ss num;std::string str ss.str();std::cout The converted string is: str std::endl;return 0;
}这种方法可用于将各种类型如浮点数、布尔值等转换为字符串。
三、stringstream函数将一个字符串按照指定的分隔符进行分词
stringstream 是 C 标准库中的一个类它可以将字符串转换为流从而可以方便地对字符串进行输入输出操作如分词、格式化等。
通过 stringstream我们可以将一个字符串按照指定的分隔符进行分词。具体使用方法如下 首先需要包含头文件 #include sstream然后创建一个 stringstream 对象并将需要分词的字符串传入该对象的构造函数 std::stringstream ss(this is a string);使用 while 循环和 运算符从 stringstream 中逐个读取分词 std::string word;
while (ss word) {// 处理分词
}在此代码片段中每次循环会从 stringstream 中读取一个单词以空格为分隔符并将其存储在变量 word 中。 可以将 运算符看作是一个提取器它会从 stringstream 中读取下一个可用的值并将其存储到变量中。当所有的值都被读取完毕时 运算符会返回 false此时循环会退出。 可以使用 getline() 函数来按照指定的分隔符读取一整行数据例如 std::string line;
getline(ss, line, ,); // 以逗号为分隔符读取一整行数据如果你需要对字符串进行分词、格式化等操作stringstream 可以是一个很好的工具。
力扣题目2512. 奖励最顶尖的 K 名学生 解题代码
class Solution {
public:vectorint topStudents(vectorstring positive_feedback, vectorstring negative_feedback, vectorstring report, vectorint student_id, int k) {mapstd::string, int words;for (const auto word : positive_feedback) {words[word] 3;}for (const auto word : negative_feedback) {words[word] -1;}vectorvectorint A;for (int i 0; i report.size(); i) {stringstream ss;string w;int score 0;ss report[i];while (ss w) {if (words.count(w)) {score words[w];}}A.push_back({-score, student_id[i]});}sort(A.begin(), A.end());vectorint top_k;for (int i 0; i k; i) {top_k.push_back(A[i][1]);}return top_k;}
};