Tuesday, August 9, 2022

c++の文字列操作で、プログラムにファイルをドラッグアンドドロップしたときのプログラムの引数の./を消す

c++で作った実行ファイルにドラッグアンドドロップでファイルを入れることがあるが、あれはプログラムの引数にファイル名がつっこまれる処理が走るだけなので、ファイル名の操作をすることが多くある。ドラッグアンドドロップで入れるファイル名は、カレントディレクトリなら./というがついてきて、こいつがなかなかにうっとうしい。ファイル名の最初に識別用の文字列を挿しこもうと思ったときに、./があるせいで、ディレクトリを含んだ処理になってしまう。

これがうっとうしいので、./を消したい。

シンプルに、stringのfind関数で、/を探して、その位置をposに保存し、関数substr(pos+1)が返す文字列を使えばよい。これで./が消えた。

もう使わないかもしれないが、メモ。


if (argv > 1) {

name = argc[1];

size_t pos = name.find("\\");

if (std::string::npos != pos) {

string str = name.substr(pos+1);

name = str;

}

}

No comments: