-----------------2021.4.23更新----------------------------------
原來更改電腦字符集的方法是可以的,但是會讓一些古老的軟件直接顯示亂碼,因為以前的很多軟件都沒適配 utf-8 ,所以今天更新下新的方式,還是回來改vscode 吧,之前就是找了半天沒找到,才直接改電腦,轉來轉去又回來了,我吐了
ps:code-runner運行是沒問題的,如果用 F5 調試還是亂碼哈,畢竟只是改了 code-runner的相關設置,你不能期望他直接改了 cmd 的東西。
步驟
- 文件-------首選項-----------設置-----------用戶------功能-------終端-------在 settings.json 中編輯
- 注釋掉所有的
"code-runner.runInTerminal": true,
,完成
-----------------2021.4.23更新----------------------------------
背景
win10系統,編譯器是MinGW
原因
出現亂碼的原因一般都是編碼問題,在vscode里面調用的是系統的終端,終端一般都是gbk的(runcoder、powershell、cmd),vscode一般默認utf-8;編碼解碼不匹配就亂碼了唄,
解決辦法
win10可以把電腦所有東西都設置成utf-8的
- 左下角設置------
時間與語言
區域
-------拉到下面找到,其他日期、時間和區域設置
----------然后點擊區域 更改日期、時間和數字格式
- 進去后,
管理
-----------更改系統區域設置
------------勾選beta版:使用Unicode UTF-8 提供全球語言支持(U)
- 重啟電腦,搞定收工
當時測試的代碼
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int binarySearch(vector<int>& nums, int target) {
if(nums[0]>target || nums[nums.size()-1]<target){
return - 1;
}
int left = 0, right = nums.size(),mid=0;
while(left<=right){
mid = left + (right - left) / 2;
if(nums[mid]==target){
return mid;
}else if(nums[mid]>target){
right = mid - 1;
}
else if(nums[mid]<target){
left = mid + 1;
}
}
return -1; //當循環條件有=時
}
int main(){
vector<int> nums = { -140,-110,-10, 0, 3, 5, 15, 19,90,110, 122, 172,212};
//二分查找
int index = 0,target=19;
index = binarySearch(nums, target);
if(index!=-1){
cout << target << "在數組中的下標是:"<< index << endl;
}
// getchar();
return 0;
}