說我有如下的事情:如何將字符串更改爲C++中的多字符文字?
int i = 'abc';
如果有辦法將一個字符串變成一個多字符的文字,像下面
char* str="abc";
int j = ?
(我們要設置int j= 'abc'
太)。
但如何用字符串做到這一點?
說我有如下的事情:如何將字符串更改爲C++中的多字符文字?
int i = 'abc';
如果有辦法將一個字符串變成一個多字符的文字,像下面
char* str="abc";
int j = ?
(我們要設置int j= 'abc'
太)。
但如何用字符串做到這一點?
您可以在運行時將字符串數據轉換爲整數。
因爲知道char
類型可以看作是一個整數,所以它可以放在一個整數中。
如果我們假設每字符8個比特,默認char
類型是無符號和unsigned int
是32位的平臺,我們可以創建從字符的整數:
char text[] = "abcd";
unsigned int value;
value = text[0] << 24
+ text[1] << 16
+ text[2] << 8
+ text[3];
可能有更多的問題涉及如果你想在編譯時間轉換字符串文字爲多字節文字。
非常感謝!這是我想要的答案。 – 2015-01-27 02:41:52
我認爲你的例子有一個運算符優先級的問題。 '<<'優先級低於'+'。這意味着它會評估'24 +文本[1]'。我懷疑這是意圖。 – 2016-04-19 20:11:04
C99 6.4.4.4/10:
包含多於一個字符的整數字符常數的值(例如,「AB」),或含有一個字符或轉義序列不映射到單字節執行字符,是實現定義的「
C++ 11 2.14.3/1:
一個多字符的文字具有int類型和實現定義 的值。
因此,不知道你的具體實現是什麼,你不能重現相同的結果。一旦你知道它做了什麼,你應該能夠自己計算j
,沒有任何問題。
如何找到我的具體實施? Thankx – 2015-01-27 00:32:33
@JieChen對於除了你自己的人以外的人來說,要想知道你正在使用哪種C++實現是有點難的。 – 2015-01-27 00:52:16
你想對那個'int'變量進一步做什麼? – 2015-01-26 23:24:36
「多字符文字」不是由C++規範定義的,儘管它們被大多數編譯器支持。主要區別在於''「abc」'和'abc \ 0''相同。 – 2015-01-26 23:26:55