当前位置: 首页> 健康> 养生 > 免费国外服务器ip_沈阳疫情最新消息名单_东莞网站建设市场_个人网站设计毕业论文

免费国外服务器ip_沈阳疫情最新消息名单_东莞网站建设市场_个人网站设计毕业论文

时间:2025/7/17 16:04:38来源:https://blog.csdn.net/well_fly/article/details/144436840 浏览次数:0次
免费国外服务器ip_沈阳疫情最新消息名单_东莞网站建设市场_个人网站设计毕业论文

一、string 转换成其他类型

1、转换为整数

使用std::stoi(适用于int)、std::stol(适用于long)、std::stoll(适用于long long)、std::stoul(适用于unsigned long)和std::stoull(适用于unsigned long long)等函数。

#include <string>
#include <iostream>int main() {std::string str = "12345";int num = std::stoi(str);std::cout << "Integer: " << num << std::endl;return 0
}

2、转换为浮点数

使用std::stof(适用于float)、std::stod(适用于double)和std::stold(适用于long double)等函数。

#include <string>
#include <iostream>int main() {std::string str = "123.45";double num = std::stod(str);std::cout << "Double: " << num << std::endl;return 0;
}

3、转换为布尔值

虽然标准库没有直接提供将std::string转换为bool的函数,但可以通过比较字符串内容来实现。

#include <string>
#include <iostream>bool stringToBool(const std::string& str) {return str == "true" || str == "1";
}int main() {std::string str = "true";bool b = stringToBool(str);std::cout << "Bool: " << b << std::endl;return 0;
}

4、转换为单个 char

如果你想要获取 std::string 中的第一个字符(或任意位置的字符),你可以直接访问字符串的索引

std::string str = "hello";char ch = str[0]; // 获取第一个字符 'h'

5、转换为 char*(可修改)

你可以使用 std::string 的 data() 或 c_str() 方法来获取一个指向字符串内部数据的指针,但这个指针是 const char* 类型的。如果你需要一个 char* 类型的指针(即你可以修改指向的数据),你需要分配一个新的字符数组并复制内容。

std::string str = "hello";
char* charArray = new char[str.length() + 1]; // +1 是为了 '\0' 终止符
std::strcpy(charArray, str.c_str());delete[] charArray; // 不要忘记释放内存

注意:在现代C++中,通常建议使用 std::string 而不是裸的 char*,以避免手动内存管理带来的复杂性和错误。

6、转换为 const char*

这是最常见的转换,通常用于需要将 std::string 传递给接受 const char* 参数的函数或API。

std::string str = "hello";
const char* cStr = str.c_str();

二、其他类型转换为string

1、整数转换为std::string

使用std::to_string函数

#include <string>
#include <iostream>int main() {int num = 12345;std::string str = std::to_string(num);std::cout << "String: " << str << std::endl;return 0;
}

2、浮点数转换为std::string

同样使用std::to_string函数。

#include <string>
#include <iostream>int main() {double num = 123.45;std::string str = std::to_string(num);std::cout << "String: " << str << std::endl;return 0;
}

3、布尔值转换为std::string

可以使用条件运算符或标准库中的字符串流(std::stringstream)。

 #include <string>
#include <iostream>
#include <sstream>int main() {bool b = true;std::string str = b ? "true" : "false";// 或者使用 std::stringstream// std::stringstream ss;// ss << (b ? "true" : "false");// std::string str = ss.str();std::cout << "String: " << str << std::endl;return 0;
}

4、单个 char 转换为 std::string

你可以将单个字符转换为 std::string,只需将该字符作为字符串字面量的一个元素。

char ch = 'h';
std::string str = std::string(1, ch); // 或者更简单地 str = {ch}; (C++11及以后)

5、char*(或 const char*)转换为 std::string

可以使用 std::string 的构造函数来从 char* 或 const char* 创建字符串。

 const char* cStr = "hello";
std::string str(cStr);
char charArray[] = "world";
std::string anotherStr(charArray);

注意事项

当从 std::string 转换为 char* 时,要记得在适当的时候释放分配的内存(如果你使用了 new)。

当从 char*(或 const char*)转换为 std::string 时,std::string 会管理自己的内存,你不需要(也不应该)尝试删除它内部的字符数据。

尽量避免在需要 const char* 的地方使用 char*,除非你有充分的理由需要修改字符串数据。使用 const 可以提高代码的安全性和可读性。

三、使用std::stringstream进行更复杂的转换

std::stringstream是另一个强大的工具,可以用于将复杂的数据类型转换为字符串,或将字符串解析为复杂的数据类型

1、将复杂类型转换为std::string

#include <string>
#include <sstream>
#include <iostream>struct Point {int x, y;};std::string toString(const Point& p) {std::stringstream ss;ss << "(" << p.x << ", " << p.y << ")";return ss.str();
}int main() {Point p = {1, 2};std::string str = toString(p);std::cout << "String: " << str << std::endl;return 0;
}

2、将std::string解析为复杂类型

#include <string>
#include <sstream>
#include <iostream>struct Point {int x, y;
};Point stringToPoint(const std::string& str) {Point p;std::stringstream ss(str);char ch;ss >> ch >> p.x >> ch >> p.y >> ch; // 解析字符串,假设格式是"(x, y)"return p;
}int main() {std::string str = "(1, 2)";Point p = stringToPoint(str);std::cout << "Point: (" << p.x << ", " << p.y << ")" << std::endl;return 0;
}
关键字:免费国外服务器ip_沈阳疫情最新消息名单_东莞网站建设市场_个人网站设计毕业论文

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: