メモ、備忘録、その他雑記を記載します。
ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
STLのstringでsubstr()を使って文字列を抽出するサンプルです。
※環境
WindowsXP sp3
VC6.0 sp6
※環境
WindowsXP sp3
VC6.0 sp6
#include <stdio.h>
#include <string>
int main()
{
std::string str;
std::string strRet;
str = "1234567890";
strRet = str.substr(1);
printf("str = \"%s\"\n", str.c_str());
printf("strRet = \"%s\"\n", strRet.c_str());
printf("\n");
// 実行結果
// str = "1234567890"
// strRet = "234567890"
strRet = str.substr(2, 3);
printf("str = \"%s\"\n", str.c_str());
printf("strRet = \"%s\"\n", strRet.c_str());
printf("\n");
// 実行結果
// str = "1234567890"
// strRet = "345"
// !!!以下は実行時エラーが発生!!!
// strRet = str.substr(100);
// printf("str = \"%s\"\n", str.c_str());
// printf("strRet = \"%s\"\n", strRet.c_str());
// printf("\n");
getchar();
return 0;
}
PR
#include <stdio.h>
#include <list>
#define for_each(it, con) for (it = con.begin(); it != con.end(); it++)
#define LIST_INT std::list<int>
int main()
{
LIST_INT lstInt;
LIST_INT::iterator it;
lstInt.push_back(1);
lstInt.push_back(4);
lstInt.push_back(7);
for_each (it, lstInt) {
printf("%d\n", *it);
}
getchar();
return 0;
}
// 処理結果
1
4
7
#include <string>
#include <sstream>
#include <iomanip> // setfill, setwなどのフォーマット指定
std::string str;
std::ostringstream stream;
stream.str("");
stream << "[0x"
<< std::setfill('0') // '0'埋め
<< std::setw(8) // 8桁
<< std::hex // 16進
<< 100 // 100
<< "]";
str = stream.str();
printf("%s", str.c_str());
// 表示結果
[0x00000064]
// 表示結果
[0x00000064]
// WinXP + VC2005にて
CString str;
CString strRet;
str = _T("1234567890");
strRet = str.Mid(2);
// 結果:strRet "34567890"
strRet = str.Mid(2, 1);
// 結果:strRet "3"
strRet = str.Mid(2, 100);
// 結果:strRet "34567890"
// メモリアクセスエラーにはならない
strRet = str.Mid(2);
// 結果:strRet "34567890"
// str.Mid(2, 100);をするくらいならこちらを推奨
strRet = str.Mid(100);
// 結果:strRet ""
// メモリアクセスエラーにはならない