我想將CTRL-A(0x01)存儲在一個C++字符串中。嘗試以下,但它不起作用。你能告訴我在這裏錯過了什麼嗎?如何將CTRL-A(0x01)存儲在C++字符串中?
string s = "\u0001";
我得到的錯誤在G ++編譯時:
error: \u0001 is not a valid universal character
我想將CTRL-A(0x01)存儲在一個C++字符串中。嘗試以下,但它不起作用。你能告訴我在這裏錯過了什麼嗎?如何將CTRL-A(0x01)存儲在C++字符串中?
string s = "\u0001";
我得到的錯誤在G ++編譯時:
error: \u0001 is not a valid universal character
你得到的錯誤是由於2.2/2在C++ 03:
如果一個通用字符名的十六進制值低於0x20的 或在0x7F的-0x9F範圍內(包括在內),或者如果通用 字符名稱指定了基本源字符集 中的字符,則該程序不合格。
因此,對於字符串文字,你必須使用\x1
或\1
替代(你可以添加前導零的味道)。或者,如果你只是想在你的字符串一個字符:
string s;
s.push_back(1);
或:
string s(1,1);
的限制放寬在C++ 11(2.3/2):
如果通用字符名稱的十六進制值 c-char-序列,s-char-序列或r-char-序列的字符或 字符串字面值 cor響應一個控制字符(在 範圍0x00-0x1F或0x7F-0x9F,包括兩者在內)或對基本源字符集 中的字符,該程序不合格。
您可以使用
std::string s = "\001";
注意,代碼是八進制。
A string
存儲ASCII字符;編譯器需要將輸入字符集轉換爲ASCII。該映射是實現定義的;看起來你的編譯器廠商決定不從U + 0001映射到ASCII 0x01。
您應該能夠初始化使用
string s = "\001";
串既然你已經有了你的價值在十六進制這很簡單:
std::string s = "\x01";
這適用於任何十六進制字符的文字。一般格式是\x<hex number>
。
'std :: string'存儲'char',它可能與ASCII沒有任何關係。 –
採取了點。 –