そのため、C++ で C-String を使用する方法を学ぼうとすると、メモリ割り当てに関する問題が発生します。
ここでの考え方は、新しい文字列が形式 (s1 + sep + s2) で作成されるということです。使用しているテキストはヘッダーを提供しているため、それを変更することはできませんが、サイズを設定しようとすると問題が発生します。 char str[] の。sLength が定数ではないため、配列のサイズを設定するために使用できないというエラーが表示されます。私はC++に比較的慣れていないので、これは2つの部分からなる質問です.
この戦略は実際に新しい配列にメモリを割り当てていますか?
strlen(char*) を使用して定数値を取得できない場合、配列サイズを正しく設定するにはどうすればよいですか?
char* concatStrings(char* s1, char* s2, char sep){ int sLength = strlen(s1) + strlen(s2) + 3; //+1 for char sep +2 for \0 at end of string char *str = new char[sLength]; strcpy (str, s1); str [sLength(s1)] = sep; strcat (str, s2); return str; }
編集が行われたので、コンパイルエラーは発生しなくなりましたが...
関数の呼び出しは次のとおりです。
char* str = concatStrings("Here is String one", "Here is String two" , c);
cout<< str;
私の出力は次のようになります。
ここに文字列 onec==================22221/21/21/21/2 / (etc.) / ここに文字列 2