2012-07-03 154 views
2

我有以下問題C++特殊字符

#include <iostream> 
#include <stdio.h> 
#include <string.h> 

int main(){ 
    string data = "\xd7\x91\xd7\x90" ; 

    data << data<<endl; 
} 

的輸出是:בא

但隨着輸入。

#include <iostream> 
#include <stdio.h> 
#include <string.h> 

int main(){ 
    char rrr[100]; 
    cout << "Please enter your string:" ; 
    scanf("%s",rrr); 

    cout<< rrr <<endl; 
}  

我鍵入的輸入是:\xd7\x91\xd7\x90

我在屏幕上看到的輸出是:\xd7\x91\xd7\x90

所以我的問題是我怎麼能轉換輸入\xd7\x91\xd7\x90בא

+5

你可以輸入 「בא」 直接... – kennytm

+1

@KennyTM ,s/could/should/... – Griwes

+0

你應該用'(char)(A * 16 + B)' – k06a

回答

4

你可以改變你的scanf聲明:

int a, b, c, d; 
if (scanf("\\x%x\\x%x\\x%x\\x%x", &a, &b, &c, &d) == 4) 
    // a, b, & c have been read/parsed successfully... 
    std::cout << (char)a << (char)b << (char)c << (char)d << '\n'; 

不過,這是更好地學習十六進制值流翼:

char backslash, x; 
char c; 

while (std::cin >> backslash >> x >> std::hex >> c && backslash == '\\' && x == 'x') 
    // or "for (int i = 0; i < 4 && std::cin >> ...; ++i)" if you only want four 
    std::cout << c; 
+0

替換輸入字符串中的所有'「\ xAB''好的解決方案! – k06a

+0

k06a:謝謝:-) –

+0

謝謝,但它沒有幫助。我需要將這個\ xd7 \ x91 \ xd7 \ x90轉換爲אב,因爲我從我無法更改的html表單中獲取它。 – RoiHatam