跳到主要內容

發表文章

目前顯示的是 10月, 2021的文章

[C++] getline 空白的一行

 以下為一個簡單讀檔範例: #include<bits/stdc++.h> using namespace std; int main(int argc, char** argv) { ifstream inputFile("haha"); string line; while(getline(inputFile, line)) { int a = 0; stringstream tkn(line); tkn >> a; cout << " a = " << a << endl; } return 0; } 文字檔 haha 內容: 3 5 6 注意結尾有多一換行。 ----------------------------------------------------- 此情況下,程式執行結果: a = 3 a = 5 a = 6 a = 0 ----------------------------------------------------- getline 在讀檔最後一行,會讀到空的字串。造成多了一筆無效資料。 所以 stringstream 切 token 時,要特別小心,用 if(tkn >> a)  條件判斷 stringstream 是否 fail。

[Linux] sed replace with regex

以下有個例子,說明 sed 如何將檔案中: #include "../bbb/file.h" 這個字串中的 ../bbb 刪除,變成: #include "file.h" 指令如下: sed -i -r 's/(#include.*)\".*\/(.*\.h)\"/\1\"\2\"/g' ./file.cpp 其中 -i 代表作用在輸入檔案。 -r 代表要使用 regex。 如果要對某個資料夾內的所有檔案執行上述 sed 操作: find <folder_path> -type f -exec sed -i -r 's/(#include.*)\".*\/(.*\.h)\"/\1\"\2\"/g' {} \;