2016-09-11 5 views
-1

こんにちはすべて私はC++に新しいです、そして、私は入力された文字列を取り、逆の文字列を出力する簡単なプロジェクトに取り組んでいます。私は何年も前に習得したクラスのプログラミングから思い出したものを使ってプログラムをコーディングしましたが、strcpyの使用に関する警告が表示され続け、コマンドプロンプトではコンパイルされず、別の方法ではわかりません。助けてください。コードは次のとおりです。C++のstrcpyの代わりに

#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; 
関連する問題