2013-06-01 178 views
1

我有這個公共函數在一個類中,我正在做的是將字符串附加到另一個字符串字符char(因爲我還對字符進行了一些檢查)。因此,它基本上是這樣的:將字符串添加到字符串會導致C++崩潰

void mystring::copy(wstring oldtext) { 
    wstring newtext; 
    for (unsigned int i=0; i<oldtext.length(); ++i) { 
     // Doing some checking ... 
     // I also used newtext.append(1, oldtext[i]); 
     newtext += oldtext[i]; 
     // Just testing 
     wprintf_s(L"String: %s\n", newtext); 
    } 
} 

所以,如果我評論了wprintf_s行程序不會崩潰,但如果我想測試,看看被添加到newtext通過使用它,它崩潰。我試圖添加"\0\n",但它不起作用,它聞起來像一些指針問題。會是什麼呢?

+4

您正在將一個類對象傳遞給可變參數C函數('wprintf_s');這不是一個好主意。 –

+0

這只是爲了測試。我將刪除它。也許我應該使用另一個函數,然後 – ali

+1

@ali,'std :: wcout <<「String:」<< newtext <<「\ n」;' – chris

回答

5

我想你應該使用newtext.c_str()將它轉換爲一個正常的C字符串,當它與%s類型說明符在printf內使用。