2012-02-24 68 views
1

我有以下文件格式| 00 00 07 09 |例如在一個文本文件 我需要一種方法來解析它,這樣每次我在「|」之間找到一個字符串時,將內部轉換爲真正的十六進制表示將文本十六進制轉換爲實數十六進制表示形式C++

例如| 30 |會給我0如何在C++中完成(該死的C#讓你如此懶惰和轉儲)。

這是文件的通用格式

+++ ATH

| FF FF F4 FD 06 |

/viewsource/template.html?

NAMENAME

| FF FF FF FF FF FF |

| 13 |

| 05 |

| 00 00 00 08 |

| 00 |

| 0A |

| 00 00 |

Ç| 82 |鈧

=

GET

FTP | 3A |/

| 01 06 00 00 00 |

HTTP/

PROPFIND

每條線將被保存在一個矢量陣列 將被傳遞到下面的函數。

void WuManber::Initialize(const vector<const char *> &patterns, 
        bool bCaseSensitive, bool bIncludeSpecialCharacters, bool  bIncludeExtendedAscii) 
+0

任何機構可以給我暗示,我將非常感激 – user1231229 2012-02-24 17:59:21

回答

3

使用字符串流

#include <sstream> 
using namespace std; 

void foo() 
{ 
    istringstream ss("30"); 
    int i; 
    ss >> hex >> i; 
} 
+0

這個代碼僅更改「任何字符串30詛咒」,我需要的是之間的任何字符串| |應該轉換爲其等效字符,不僅是「30」 – user1231229 2012-02-24 22:19:54

+0

@WilliBurkhardt:您不使用'stringstream'的輸出部分。使用'istringstream'可以提供更明確的意圖。只是認爲它可以幫助OP有一個實際編譯的代碼示例。如果你不喜歡它們,你可以回滾更改。 – 2012-02-25 04:44:33

+0

@sad:訪問該帖子的歷史。這個改變是在編輯你的帖子之前用'izomorphius'完成的,添加'using namespace'並將'stringstream'改爲'istringstream'。 – 2012-02-25 22:43:38