【发布时间】:2018-10-21 03:41:37
【问题描述】:
我最近开始学习 C++,并写了几行代码来接受一个字符串,显示其中的字符数,并显示输入字符串的反转。这是我写的。
#include <iostream>
int main()
{
char string[25],rev_string[25];
int counter=0,length=0;
std::cout << "\n Enter the string : ";
std::cin >> string;
while(counter==!'\0')
{
counter=counter+1;
length=length+1;
}
counter=0;
std::cout << "The string has "<<length<<" characters in it.";
while(length>=0)
{
rev_string[counter]=string[length];
counter=counter+1;
length=length-1;
}
std::cout << "\n The reverse of the given string is : "<<rev_string;
return(0);
}
调试时没有错误,但是当我运行程序时,我得到了一些意外的值并且字符串长度显示为零。你能指出我在哪里做错了吗?
这是我运行程序时得到的。
【问题讨论】:
-
==!'\0'不是你想要的。试试!='\0'。也许不是柜台? -
在c++中你应该使用
std::string而不是char[] -
另见
std::reverse。如果您不能使用std::reverse,那么我希望在某处看到std::swap。当然,你还有How do you reverse a string in place in C or C++?、How to reverse an std::string? 和朋友。 -
如果没有 std::reverse,您将需要从指向开始和结束字符的指针开始,然后交换
while (end > start)(不要交换整个字符串,否则您最终会反转字符串两次并最终回到你开始的地方)