2

連結する最良の方法はどれですか?

const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);

エラーが発生します。正しい方法は何ですか?

ありがとう。

4

2 に答える 2

2

正しい方法は次のとおりだと思います。

std::string msg = std::string("Init() Failed ") + initError + "\n";
std::cout<<msg;

また

std::cout<<"Init() Failed "<<initError<<"\n";
于 2011-04-05T13:54:46.540 に答える
1

あなたの大きな問題は、データ型を混在させていることです。charおよび関連付けられた関数 またはおよび関連付けられた関数のいずれかを使用しますwchar。それらを混在させる必要がある場合は、変換関数を使用してください。これは、文字列を必要とする関数に float を渡そうとするよりも意味がありません。wprintf( の宣言は のようなものなので、コンパイラは両方の問題をキャッチできるはずint wprintf(const wchar_t *, ...)です。)

もう1つの、より小さな問題は、printf文字列にパーセント記号があると未定義の動作が発生するため、一般的な文字列を出力するための適切な関数ではないことです。printf("%s",...)またはputs(...)または 関連する機能を使用します。

そして、これは C++ であるため、このstd::stringクラスを使用する方がはるかに優れています。完璧ではありませんが、C スタイルの文字列よりもはるかに優れています。

また、エラーの内容を教えていただけると助かります。それがコンパイラ エラーなのか実行時エラーなのかさえ教えてくれませんでした。

于 2011-04-05T14:27:14.320 に答える