我如何以这种方式计算字符串数组
How do I cout string array in this way
所以我决定检查这个词是否是回文。所以我做了 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() );
所以我决定检查这个词是否是回文。所以我做了 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() );