c++ - 如何大写和标题字符串
问题描述
如果给我一个字符串,我需要大写或标题字符串。例如:
解决方案
您的代码存在一些问题。这是您的代码的修改版本,可以正常工作。这里:
std::string Capitalize(const std::string &str) {
std::string Ret;
for (int i = 0; i < str.length(); i++){
char c = str[i];
if (i == 0){
Ret += toupper(c);
}
else if (i != 0){
Ret += (tolower(c));
}
}
return Ret;}
for 循环中的条件需要是 str.length() 而不是 Ret.length() 并且这里:
std::string Title(const std::string &str) {
std::string Ret;
int i=0;
for (int i=0;i<str.size();i++) {
if(!(i==0 && str[i]==' '))
Ret += tolower(str[i]);
}
int size = Ret.length();
for (int i = 0; i < size; i++) {
if (i==0 || Ret[i - 1] == ' ')
{
Ret[i] = toupper(Ret[i]);
}
}
return Ret;}
检查 i 是否为 0 以防止超出范围访问字符串。
推荐阅读
- javascript - 获取包含由一个或多个逗号分隔的电子邮件地址的字符串
- android - 使用分页架构组件调试分页
- database-administration - ArangoDB 按需压缩文件空间回收的最佳实践
- javascript - 不变违规:元素类型无效:期望字符串或类/函数,但得到:对象。检查渲染方法
- python - 多步预测 LSTM 模型
- java - 在 DropWizard 中禁用 Swagger Bundle
- sql - 在满足条件之前如何获取最新数据?[SQL]
- c# - 如何设置默认值而不是从 Create-View 的下拉列表中选择
- apache-spark - 为什么在 PySpark 中使用 UDF 而不是 Function?
- c# - 我怎样才能拥有一个包含两个 .Net Core 项目的解决方案并使用两个 Startup.cs 文件来设置服务?