c++ - 反向 C 风格的字符串? - C++

标签 c++ pointers arrays

我想在 C++ 中使用指针来反转 char 数组。我想知道是否有什么我应该做的不同的事情?我这样做正确吗?有没有更有效的方法来完成这个?

我的小程序:

int main ( )
{
    char buffer[80];

    PrintHeader();

    cout << "\nString reversal program";
    cout << "\nType in a short string of words.";
    cout << "\nI will reverse them.";
    cout << "\n:";
    cin.getline(buffer, 79);

    cout << "\nYou typed " << buffer;
    reverse (buffer);
    cout << "\nReversed: " << buffer;

    cout << endl;
    system("PAUSE");
    return 0;

}


void reverse(char* string)
{
    char* pStart, *pEnd;
    int length;
    char temp;

    length = strlen(string);

    pStart = string;
    pEnd = &string[length - 1];

    while(pStart < pEnd)
    {
        temp = *pStart;
        *pStart = *pEnd;
        *pEnd = temp;
        pStart++;
        pEnd--;
    }
}

最佳答案

void str_reverse( char *str ) {
    char *str_end = strchr( str, 0 );
    std::reverse( str, str_end );
}

如果你要写一个循环,

void str_reverse( char *str ) {
    std::size_t len = std::strlen( str );
    for ( std::size_t index = 0; index != len / 2; ++ index ) {
        std::swap( str[ index ], str[ len - index - 1 ] );
    }
}

或者,当然,如果您可以使用 C++ 字符串,

void str_reverse( std::string &str ) {
    std::reverse( str.begin(), str.end() );
}

关于c++ - 反向 C 风格的字符串? - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2197412/

相关文章:

java - 数组方法返回所有空元素而不是对象元素

javascript - 在数组中搜索,而不仅仅是唯一值

c++ - 在哪些情况下我们需要保护继承?

c++ - 函数中的智能指针

c++ - Boost Spirit 可选解析器和回溯

C 指针赋值行为

代码在循环的第二次运行时停止

c++ - 在 Windows-8 64 位中通过 eclipse luna 运行 valgrind/其他内存检查

c++ - 查找由链表链接的数据的各个地址。 C++

Android - 如何从 ImageButton 数组中获取特定 ID?