顯示具有 Tech-programming-Cpp 標籤的文章。 顯示所有文章
顯示具有 Tech-programming-Cpp 標籤的文章。 顯示所有文章

2021年9月13日 星期一

Regular express正規化表示法好用網站

2021年7月24日 星期六

c++ const method

 一個method被標記為const 表示他不會改變所屬class的member,function若能被標記為const應盡量這麼做

class A{
  int b;
  void c(){
      b = 0; // compiling error
  };
};

c++ const method

2021年2月14日 星期日

VS code debug時 cout 沒有顯示

 在vscode debug時,如果沒有在launch.json中設定externalterminal=true, cout會顯示在Terminal這個Tab中(如果不見可以按ctrl + J)

另一點要注意的是,目前C++的cout需要下

cout.flush();

才會把前面cout的內容印出來

VS code debug時 cout 沒有顯示

2020年5月15日 星期五

window c++設定thread 優先度

2019年6月4日 星期二

visualstudio 預設的 debugging dir

VisualStudio 預設的 debugging dir 是 project directory
但output dir 卻是$(SolutionDir)$(Configuration)\
這會造成在debugger之中執行(F5)跟用執行檔執行結果不同,某些resource會需要另外複製一份
所以建議可以將debubbing / working directory 改成跟output directory依樣會比較方便

visualstudio 預設的 debugging dir

2019年6月2日 星期日

Visual Studio C++程式移植

最近寫好的小程式要放到工作但腦上用
但在工作電腦上會依直出現找不到dll 的問題orz
msvcp150d.dll,ucrtbased.dll..之類的
明明可轉發套件也灌了
後來解決方法是用把configure由debug轉成release因為這樣會轉換到的設定有點多,一時之間也搞不清楚到底是那些設定解決這問題anyway, 問題解決啦 yeah(可轉發套件應該還是要灌, 下載網址:https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)~

題外話, 過程中發現vs2017好像原生沒有可以做steup的功能,需要另外安裝插件Microsoft Visual Studio Installer Projects來做
詳細操作過程可以看這個影片
但其實這功能對缺少dll這件事情是沒有幫助的,他需要加入的檔案是需要user去手動找出來加入

Visual Studio C++程式移植

C++ local thread

在C++中區域變數在離開scope的時候就會被釋放
所以當在fonction中直接開thread, 一但離開function,該thread就會被釋放掉
ex:
void MyFun()
{
    std::thread myThread(&ThisClass::RuningFun, this);
}

C++ local thread

2019年3月28日 星期四

property sheet, 免去設定 include 路徑 , lib路徑...的麻煩

最近都用opencv配合C++, IDE用VS2017開發
每個案子要用到openCv就要設定一次,有點麻煩
這時候A大分享一招,property sheet

property sheet, 免去設定 include 路徑 , lib路徑...的麻煩

2019年3月27日 星期三

C++ 取時間到ms

因為目前的程式執行一次需要數百ms,想將每次執行的結果圖片序列存到以執行時間命名的資料夾中, 所以資料夾名稱需要包括 ms
c++ 內建取時間只能取到 秒

C++ 取時間到ms

2019年2月27日 星期三

VS C++ 專案的使用者權限(UAC)

在開發找COM Port的程式的時候會需要用到 Admin的權限
如果沒有權限,指令未必不可執行,但可能發生不可預期的行為
可以在Project 按右鍵 > Properties > Linker > Manifest file 中 將 UAC (User Account control) 設定為 "requireAdministrator" 強迫 User 要用 Admin 執行

VS C++ 專案的使用者權限(UAC)

2019年2月13日 星期三

C++ 忽略跳脫字元(Escape Codes)

常常在路徑中都會含有 \的字元,造成\以後的字元與\形成跳脫字元(Escape Codes)
可以用R"()"來避開
ex:
String path = R"(D:\)"
就與
String path = "D:\\" 的結果相同

C++ 忽略跳脫字元(Escape Codes)

2017年12月8日 星期五

Interface in C++

針對介面寫作!
但C++並沒有Interface這種東西,而是要自己用class去變出來

Interface in C++

2017年4月18日 星期二

[c++]msvcp140d.dll

在2015弄了一個c++專案到另外一台電腦跑,那台電腦是win7,沒vs2015。一開始complain沒有msvcp140d.dll,到dll-files下載放好之後換沒有vcruntime140d.dll...
易春木上找到解答
答案是要compile成release mode就ok(那台電腦上要已經安裝vc2015的可轉發套件)


[c++]msvcp140d.dll

2016年11月13日 星期日

C++ c# raw string literal 原始字串

在C++字串中為了可以表示換行,tab等特殊操作,因此有跳脫字元\
好死不死資料夾路徑也用很多'\'
以前都會使用兩個("\\")表示\,但這樣的問題是在複製路徑後需要經過加工有點麻煩
ex: c:\testFile.txt 需要以 "c:\\testFile.txt"表示,麻煩
C++ 11裡面提供Raw String
表示
R"\a\b\c"
相當於
"\\a\\b\\c"
蠻方便的

在c#中則可以用 @"\a\b\c"
相當於"\\a\\b\\c"

C++ c# raw string literal 原始字串

2016年8月22日 星期一

c++ pointer of address

當需要在method中allocate記憶體並給外部使用時就會需要用到pointer of address。因為address是在method中產生,因此需要傳入address的容器。

c++ pointer of address

2016年8月15日 星期一

C++找不到include檔案

在win10用vs2015打開原廠用2010產生的cpp專案,許多include的檔案都找不到,當然也跑出一拖拉庫的錯誤
從project的property中確定有用還境變數設定搜尋範圍
後來發現要將專案目錄下的.sdf檔刪除,intellisense才會重新去搜尋include的目標

C++找不到include檔案

2016年8月9日 星期二

fopen mode

用c++讀取smart ray產生的.asc檔案
搞了很久,真的是不知道在離奇甚麼
有找出一些問題,但是一些問題無法分離

fopen mode

2016年8月8日 星期一

c++快速讀取(空白)分隔文字檔案

研究了一陣子終於可以快速讀取檔案(一開始讀取時間為7s,改善後為300ms)
概念是把全部的檔案都先load到記憶體中
並且先掃過檔案,知道elements數,產生靜態陣列
最後再用strtod將記憶體中的char*轉換成double
strtod可以回傳轉換終止的ptr
atod可以轉換,但沒有回傳ptr

c++快速讀取(空白)分隔文字檔案

c++快速讀取(空白)分隔文字檔案

研究了一陣子終於可以快速讀取檔案(一開始讀取時間為7s,改善後為300ms)
概念是把全部的檔案都先load到記憶體中
並且先掃過檔案,知道elements數,產生靜態陣列
最後再用strtod將記憶體中的char*轉換成double
strtod可以回傳轉換終止的ptr
atod可以轉換,但沒有回傳ptr

c++快速讀取(空白)分隔文字檔案

2016年8月5日 星期五

改變stack大小

用ifstream讀取一個14MB的文字檔竟然要花7s..
在c#一樣的檔案只花300ms

改變stack大小