有人能告诉我为什么这不起作用吗? 我想检查一个单词是否是回文(不使用reverse()方法)
const char *data = "size=100M,mode=0755";
...
mount(source, target, filesystemtype, mountflags, data);
答案 0 :(得分:3)
让我们看看这两个具体的行:
string temp;
temp[count] = s[i];
在第一行中,您声明了一个空字符串对象。然后在第二个中,您尝试写入空字符串的索引count
。由于字符串为空,索引将超出范围。索引越界导致未定义的行为。
相反,第二行可能是例如。
temp += s[i];
这会将字符附加到字符串temp
,并且根据需要扩展字符串。
或 您可以将临时字符串的大小设置为与输入字符串相同的大小:
string temp{s,size(), ' '};
答案 1 :(得分:1)
您有两种方法可以纠正您的代码:
定义临时字符串的大小。
char temp[s.size]; //Something similar to this.
string temp;
创建一个空字符串,您可以使用追加赋值运算符将反向字符串附加到空字符串。 temp+=s[i];
以下是更正后的代码:
bool check(const string & s)
{
string temp;
//int count = 0;
for (long i = s.size() - 1; i >= 0; i--)
temp += s[i];
//temp[count] = s[i];
cout << temp;
if (temp == s)
return true;
else
return false;
}