忍者ブログ
メモ、備忘録、その他雑記を記載します。 ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

STLのstringでsubstr()を使って文字列を抽出するサンプルです。
※環境
 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;
}
 

拍手[0回]

PR
strtol(),strtoul()を使用する。


ULONG ul = 0;
ul = strtoul("64", NULL, 16);

// これで ul には 0x64 (つまり100) が入る
 

拍手[0回]

#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
 

拍手[0回]

#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]
 

拍手[0回]

// 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 ""
// メモリアクセスエラーにはならない

拍手[4回]

 HOME | 1  2 
Admin / Write
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
Ace
性別:
非公開
バーコード
ブログ内検索
P R
忍者アナライズ
忍者ブログ [PR]