2016-09-11 92 views
-1

嘿所有我新來的C++和我正在一個簡單的項目,它採用一個輸入的字符串和反向輸出字符串。我使用我從幾年前編程的類中記得的內容對程序進行了編碼,但是我不斷收到使用strcpy的警告,並且它不會在命令提示符下編譯,我也不完全確定替代方法。請幫忙。這裏是代碼:替代strcpy在C++

#include <iostream> 
#include <string> 

using namespace std; 

int main() { 
    string reverse; 
    char *head, *tail, *cstr, temp; 
    int i = 0; 

    cout << "Please enter a string: " << endl; 
    cin >> reverse; 

    cstr = new char[reverse.size() + 1]; 

    strcpy(cstr, reverse.c_str()); 
    head = &cstr[0]; 
    tail = &cstr[reverse.size() - 1]; 

    cout << "The string inverted is: " << endl; 

    while (head <= tail) { 
     temp = cstr[i]; 
     cstr[i] = *tail; 
     *tail = temp; 
     *tail--; 
     *head++; 
     i++; 

    } 
    cout << cstr; 
    cout << "\n"; 

    return 0; 

} 
+0

*「程序設計課我花了好幾年以前「*就像在90年代初?認真閱讀一些最新的學習資料,如果你要編寫C++。 –

+0

['std :: copy()'](http://en.cppreference.com/w/cpp/algorithm/copy)或許? –

+0

你從來沒有聲明'strcpy'。 –

回答

-2

你可以使用memcpy來複制你的字符串。儘管strcpy可能會在內部使用memcpy。

+0

他要求一個C++替代品。我不認爲你正在回答這個問題。 – user4407569

0

我在我的所有項目中定義了_CRT_SECURE_NO_WARNINGS以關閉這些警告。

由於標準strcpy可能導致緩衝區溢出和多餘的損壞,您可以使用strcpy_s來代替。

1

你幾乎可以肯定要使用std::string,盡你所能地忘記你甚至聽說過strcpy。我可能會寫這個東西一般順序:

std::string forward; 
std::cin >> forward; 

std::string reverse{forward.rbegin(), forward.rend()}; 

std::cout << "The string reversed is: " << reverse; 

如果你喜歡扭轉到位字符串,標準庫有一個std::reverse爲:

std::string reverse; 
std::cin >> reverse; 

std::reverse(reverse.begin(), reverse.end()); 

std::cout << "The string reversed is: " << reverse;