這是最好的連接方式?Const char * vs const wchar_t *(concatenation)
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 * vs const wchar_t *(concatenation)
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 *, ...)
。)
另外一個更小的,問題是,printf
和如不打印出一般串正確的功能,因爲如果字符串中有任何百分號,你會得到未定義的行爲。使用printf("%s",...)
或puts(...)
或相關功能。
而且,既然這是C++,那麼使用std::string
類會更好。這並不完美,但它比C風格的琴絃要好得多。
另外,告訴我們錯誤是什麼會有所幫助。你甚至沒有告訴我們這是編譯器錯誤還是運行時錯誤。
什麼是initError?另外如果你正在處理字符,你必須使用printf。是wchar_t類型的initError嗎? – 2011-04-05 13:47:53
你在找'wcstombs'嗎? – Erik 2011-04-05 13:48:02
如果我使用printf和fprintf,initError的類型也是const char * – Azodious 2011-04-05 13:49:56