c++ - 为什么返回没有按预期工作给一些随机字符串
问题描述
所以问题是给了一个字符串,它是一个像 Sam Harris 这样的名字,你必须输出它的缩写,我所做的是在字符串中找到空格,然后取一个字符串 otp,它将添加 str[0] 名称的第一个字母 str[pos +1] 位置后的字母,还添加了 . 介于两者之间,但 return 语句正在返回一些随机值。这不是预期的。#包括
std::string abbrev(std::string str)
{
int pos{0};
for(int i=0;i<str.length();++i)
{
if(str[i]==' ')
{
pos=i;
break;
}
}
std::string otp=str[0]+"."+str[pos+1];
return otp;
}
int main()
{
std::string str="Sam Harris";
std::cout<<abbrev(str)<<"\n";
return 0;
}
解决方案
问题是这里:
str[0]+"."+str[pos+1];
不是构造字符串。它在一些字符上添加了 a char*
,有效地执行了一些无效的指针算术。像这样修复它:
std::string otp = str[0] + std::string(".") + str[pos + 1];
现在std::string(".")
正确地制作 a并使用's operator+std::string
按预期附加这些字符。std::string
推荐阅读
- java - 带有 Spring Boot 未授权 (401) 响应的 OAuth2
- javascript - 两个不同 Web 客户端之间的 Web RTC 不工作
- c++ - 读取文本文件的不同方法?
- r - 加入没有标题的 CSV,而不会丢失 R 中的任何列/行
- laravel - Laravel 6-邮件未从本地主机发送
- c - 在地址上调用堆栈推送时如何避免更改值
- python - 关于“生成器”对象在使用生成器概念时没有“下一个”属性的错误
- python - TensorFlow 和 RMSprop 的 Py_call_impl 错误
- java - 在 Firestore 中读取时出现 Android 封装错误
- javascript - 检测字符串是否被修剪