在 C++ 中將多個字符附加到字符串

k-dx

使用+是在 C++ 中將字符附加到字符串的有效方法,如下所示:

string s = "";
s += 'a';

然而,

string s = "";
s += 'a' + 'b';

給出一個warning: implicit conversion from 'int' to 'char' changes valueand 不附加aandb字符。

為什麼第一個示例附加了字符而第二個示例沒有?

林蛙

這與運算符優先級有關讓我們以表達式為例:

string s = "";
s += '0' + '1';//here + has higher precedence than +=

Here 的+優先級高於+=so 字符'0''1'並作為('0' + '1'). 所以上面等價於寫:

s+=('0' + '1');

接下來,有和和的到到隱式轉換所以變成十進制48,而字符變成十進制49。charint'0''1''0''1'

所以基本上以上簡化為:

s+=(48 + 49);

或者

s+=(97);

現在 97 對應於字符a,因此附加到命名的字符串變量的最終結果s是字符a

現在讓我們將其應用於您的示例:

string s = "";
s += 'a' + 'b';

首先是由於優先:

s+=('a' + 'b');

charto 的第二次隱式轉換int發生:

s+=(97 + 98);

所以

s+=195;

所以十進制195對應的字符會被追加到字符串s中。

您可以嘗試添加和減去不同的字符以確認是否發生了這種情況。

為什麼第一個示例附加了字符而第二個示例沒有?

所以根本原因是運算符優先級。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 C# 將字符附加到 MongoDB 文檔中的字符串

在C#中附加到字符串数组

將字符串中的字符與 C 中的另一個字符進行比較

將 JSON 字符串反序列化為多個 C# 對象

更改ascii代码并将字符预附加到C ++中的字符串

如何将字符附加到 C 中的字符串数组

c#將反轉的字符串存儲到另一個字符串中

目标C宏附加到字符串

附加到字符串使其为空,C

无法将值附加到字符串C#

根据用户输入附加到C字符串

如何在C ++中将long附加到字符串?

如何在C中将char附加到动态分配内存的字符串中?

如何将标记附加到C中的字符串变量?

如何在C ++中从循环附加字符串?

将字符附加到C字符串时Valgrind无效的读/写

如何在C中将字符附加到字符串文字

字符串,以无符号长形式将ascii值附加到二进制文件中。C ++

C ++字符串附加问题

附加字符串的 C 宏

如何将 c 样式字符串或字符串文字附加到 std::vector<char*>?

字符串數組中字符串(多個實例)的遞歸二分搜索 - C#

通過 C# 中的預定義索引從字符串中刪除多個“單詞”?

C ++:将__PRETTY_FUNCTION__附加到c字符串

將 SQLITE SELECT ... IN 語句與 C# 中的字符串數組一起使用會給出數組中具有多個值的空結果

将字符串追加到C ++中的类变量

将JSON字符串添加到C#中的现有字符串

C ++有效地(惯用地)附加到字符串向量

如何在Objective C中将参数附加到字符串?