連結する最良の方法はどれですか?
const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);
エラーが発生します。正しい方法は何ですか?
ありがとう。
連結する最良の方法はどれですか?
const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);
エラーが発生します。正しい方法は何ですか?
ありがとう。
正しい方法は次のとおりだと思います。
std::string msg = std::string("Init() Failed ") + initError + "\n";
std::cout<<msg;
また
std::cout<<"Init() Failed "<<initError<<"\n";
あなたの大きな問題は、データ型を混在させていることです。char
および関連付けられた関数 またはおよび関連付けられた関数のいずれかを使用しますwchar
。それらを混在させる必要がある場合は、変換関数を使用してください。これは、文字列を必要とする関数に float を渡そうとするよりも意味がありません。wprintf
( の宣言は のようなものなので、コンパイラは両方の問題をキャッチできるはずint wprintf(const wchar_t *, ...)
です。)
もう1つの、より小さな問題は、printf
文字列にパーセント記号があると未定義の動作が発生するため、一般的な文字列を出力するための適切な関数ではないことです。printf("%s",...)
またはputs(...)
または 関連する機能を使用します。
そして、これは C++ であるため、このstd::string
クラスを使用する方がはるかに優れています。完璧ではありませんが、C スタイルの文字列よりもはるかに優れています。
また、エラーの内容を教えていただけると助かります。それがコンパイラ エラーなのか実行時エラーなのかさえ教えてくれませんでした。