C++小白向大神們請教一下
static int output_fa_and_child(struct tree* fa)
{
printf("行程PID:%d \t行程名:%ws \n", fa->elem.processID, fa->elem.processName.c_str());
struct tree* vy = fa->FirstChild;
while (vy) {
output_fa_and_child(vy); //遞回呼叫
vy = vy->NextBro;
}
return 0;
}
這串代碼,基本上都能輸出行程名,但有一些行程沒法輸出行程名,甚至后面的換行符也不起作用了,想問問大神們是什么問題導致的。
uj5u.com熱心網友回復:
行程沒有名稱很正常。輸入輸出的時候先檢測下,不然指向unsigned short t[10] = { 0x0fff };這樣的隨意空間就會產生這樣的狀況。
uj5u.com熱心網友回復:
可能是行程名包含中文,中文的GBK編碼在中文Windows的控制臺下是能正常顯示的,如果是中文的寬字串(即Unicode)的,則中文部分顯示會有問題。參見https://blog.csdn.net/binaryhead/article/details/109993588uj5u.com熱心網友回復:
要看看你tree里面先前的處理是怎樣的uj5u.com熱心網友回復:
static int output_fa_and_child(struct tree* fa)
{
printf("\xe8\xbf\x9b\xe7\xa8\x8bPID:%d \t\xe8\xbf\x9b\xe7\xa8\x8b\xe5\x90\x8d:%s \n", fa->elem.processID, fa->elem.processName.c_str());
struct tree* vy = fa->FirstChild;
while (vy) {
output_fa_and_child(vy);
vy = vy->NextBro;
}
return 0;
}
uj5u.com熱心網友回復:
對電腦而言沒有亂碼,只有二進制位元組;對人腦才有亂碼。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8Auj5u.com熱心網友回復:
這是你一直強調的對電腦而言沒有亂碼,其實是抬杠。我們人眼看到電腦顯示字符是亂碼,說是電腦亂碼不對嗎?在電腦中,以一種編碼格式的字符編碼值,強行解釋為另外一種編碼格式,就會出現亂碼的。你上面的程式printf("\xe8\xbf\x9b\xe7\xa8\x8b...,在機器上運行過嗎?不是亂碼嗎?

uj5u.com熱心網友回復:
亂碼只是因為你不知道你用來輸出的終端或視窗是否支持utf8編碼的漢字顯示。uj5u.com熱心網友回復:
chcp 65001試試
uj5u.com熱心網友回復:
打了個斷點試了試,發現是wstring亂碼了,之前獲取行程名稱的時候不是亂碼的,存到樹結構里就亂碼了。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228632.html
標籤:C++ 語言
