C++の下でいくつかのよく使う操作の実現
stringの文字列置換操作(最初に一致)
stringのsplit操作
intタイプを一定長string文字列に変換する
ヘッダファイルを含める必要があります(#include)
ファイルが存在するかどうかを判断する
ヘッダファイルを含める必要があります(#include)
ディレクトリの下にあるすべてのファイルを読み込みます(Windows)
Windowsが持参したwin 32 APIを利用します.もっと参考にしてくださいhttp://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c
ディレクトリの下にあるすべてのファイルを読み込みます(Linux)
linuxの「dirent.h」ヘッダファイル(https://stackoverflow.com/questions/4204666/how-to-list-files-in-a-directory-in-a-c-program)
string strFirstReplace(const string & src, const string & pattern, const string & rep)
{
string ret = "";
int pos = src.find(pattern);
if (pos != string::npos)
{
if (pos + pattern.length() < src.length())
{
ret = src.substr(0, pos) + rep + src.substr(pos + pattern.length());
}
else
{
ret = src.substr(0, pos) + rep;
}
}
return ret;
}
stringのsplit操作
void strSplit(const string& src, const string &separate_character, vector<string> &strs)
{
int separate_characterLen = separate_character.size();
int lastPosition = 0, index = -1;
while (-1 != (index = src.find(separate_character, lastPosition)))
{
strs.push_back(src.substr(lastPosition, index - lastPosition));
lastPosition = index + separate_characterLen;
}
string lastString = src.substr(lastPosition);
if (!lastString.empty())
strs.push_back(lastString);
}
intタイプを一定長string文字列に変換する
ヘッダファイルを含める必要があります(#include
string fixedLengthInt2str(const int i, const int length)
{
ostringstream oss;
if (i < 0)
{
oss << '-1';
}
oss << setfill('0') << setw(length) << (i < 0 ? -i : i);
return oss.str();
}
ファイルが存在するかどうかを判断する
ヘッダファイルを含める必要があります(#include
bool fileExists(string filename)
{
struct stat fileInfo;
return stat(filename.c_str(), &fileInfo) == 0;
}
ディレクトリの下にあるすべてのファイルを読み込みます(Windows)
Windowsが持参したwin 32 APIを利用します.もっと参考にしてくださいhttp://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c
void list_dir(const string & path, vector<string> & files)
{
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(path.c_str(), &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
// filtering directory and hidden file
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
!(fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN))
{
files.push_back(fd.cFileName);
}
} while (::FindNextFile(hFind, &fd));
}
else
{
cout << "Error: cannot find the first file!" << endl;
}
FindClose(hFind);
}
ディレクトリの下にあるすべてのファイルを読み込みます(Linux)
linuxの「dirent.h」ヘッダファイル(https://stackoverflow.com/questions/4204666/how-to-list-files-in-a-directory-in-a-c-program)
void list_dir(const string & path, vector<string> & files)
{
DIR * dir = NULL;
struct dirent * dir_node = NULL;
dir = opendir(path.c_str());
if(dir != NULL)
{
while((dir_node = readdir(dir)) != NULL)
{
files.push_back(dir_node->d_name);
}
closedir(dir);
}
}