cstringライブラリとcstringライブラリのいくつかの機能について知りました。関数strcpyを使用しようとすると、混乱する問題が発生します。誰かが最初のコードがうまくいかず、2つ目のコードが完全にうまく動作するのに対し、なぜ私に説明することができますか?strcpyとstrcatの問題
まずコード:
char *str1 = "hello";
char *str2 = "hi";
strcpy(str1, str2);
cout << str1;
セカンドコード
char str1[] = "hello";
char *str2 = "hi";
strcpy(s1,s2);
cout << str1;
私は、問題は、私は変数STR1を宣言したが、私はまだstr1があるときに、それが動作しない理由はわかりませんどのように推測しますポインタ。あなたは非constポインタchar* str1
に(const
である)"hello"
リテラル文字列へのポインタを代入しているため
C++ 11では、const以外の 'char *'に文字列リテラルを格納しているため、どちらも許可されません。あなたのコンパイラがそれらを起動すると警告/エラーが出る可能性があります。 – chris
'std :: string'を使って、気にする必要はありません。 'char * str1 =" hello ";'はコンパイラのエラー/警告でなければなりません。あなたが1つを取得していない場合は、設定をする必要があります。 – NathanOliver
[strncpyとstrcatは私が彼らがC++と思うように動作しません](http://stackoverflow.com/questions/29283567/strncpy-and-strcat-not-working-the-way-i-think-they-would- c) –