首页 > 解决方案 > 为什么返回没有按预期工作给一些随机字符串

问题描述

所以问题是给了一个字符串,它是一个像 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;
}

标签: c++stringcharreturn

解决方案


问题是这里:

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


推荐阅读