c++ - 我如何以这种方式退出字符串数组

标签 c++ arrays string palindrome

所以我决定检查这个词是否是回文。所以我做了2个字符串,我必须输入单词(例如"Hello")。我不明白如何比较这2个字符串,并且在将word.length与变量i一起使用时出现错误。我如何解决它?是否有必要更改代码,或者我只能更改我的内容?

string word,s;
cin>>word;
for(int i=word.length()-1;i>=0;i--){
    s[i]=word[i];
}
if(s==word)
    cout<<1;

最佳答案

实际上,不需要使用其他字符串来检查给定的字符串是否是回文。您可以循环执行这种检查。

但是,使用您的方法可以写得更简单。例如

if ( word == std::string( word.rbegin(), word.rend() ) ) std::cout << 1; 

至于错误,您说的似乎是编译器不会像将带符号整数i与调用word.length *()返回的无符号整数值进行比较时一样。

此外,由于字符串s为空,因此您不能使用下标运算符
s[i]=word[i];

你可以写
s += word[i];

要么
s.push_back( word[i] );

初步,您可以为字符串s保留足够的内存,例如
s.reserve( word.size() );

关于c++ - 我如何以这种方式退出字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59290878/

相关文章:

php - PHP 的 C++ 扩展

c++ - NodeJS 和 C++ 之间的通信

java - GridWorld 中的移动算法

ruby - 对象数组 : Reject all but ones with largest value

c - 在 C 中处理多字节(非 ASCII)字符

python - 如何从 Python 中的字符串数组的偏移量中去除前导空格?

c++ - 在 3D 中可视化点、线和三角形(C++ API 和文件格式)

C++ 数组传递参数

c++ - 查找两个数组中的共同元素

c - 如何正确声明此功能?