关于整数变量和字符串连接的最基本问题,在C ++中使用“ +”

弗鲁德

我是C ++的新手,这个问题对许多人来说似乎微不足道,但是请记住,我只是在开始使用C ++语言。

我已将变量分配x为equal,20并希望将其与字符串连接。我的C ++代码如下。

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
  int x = 20;
  int y = 15;
  if (x >= y) {
    cout << x + " is greater than " + y;
  }
}

我的预期结果是20 is greater than 15,但是结果却有些奇怪é@我很困惑,在GeeksForGeeks,w3schools或SO的其余部分上找不到解决方案。

我知道使用cout << x << " is greater than " << y;效果很好,但是我不确定为什么串联在这里不起作用。另外,为什么这些奇怪的字符反而出来呢?

提前致谢。

(另外,请不要不回答这个问题留下一个答案。我记得开始的时候JS我问一个问题,唯一的答案是“不使用document.write。”虽然我得到的,它会是更好的选择实际上回答了问题并将其作为旁注。)

jcai

之所以得到一些奇怪的输出,是因为C ++是C演变的一部分历史。在表达式中x + " is greater than " + y,表达式" is greater than "const char*文字,它是原始的C样式类型。std::string由于向后兼容的原因,它不是C ++类类型

您的+符号会将整数加到const char*这导致指针运算。基本上" is greater than "是a const char*,它是指向内存缓冲区的指针,该缓冲区的内容为的ASCII字节" is greater than "加上x的效果y是将指针移到右边的35个字节,它将离开缓冲区的末尾并读取未初始化的内存。那就是出现的“奇数字符”。正确地说,这是未定义的行为,因此任何事情都可能发生。尽管在实际系统中,这只是缓冲区溢出读取,导致出现乱码。

正如其他人指出的那样,解决此问题的方法是std::to_string在整数上使用然后,代替int + const char* + int您将得到std::string + const char* + std::string更好的处理。

如果不清楚,您可以查找指针,C风格的字符串和缓冲区溢出以获取更多信息。

编辑:从技术上讲字符串文字是,const char[]但是为了清楚起见,我省略了它。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在字符串连接中使用foreach

来自分类Dev

在xmltable中使用“字符串连接”时出错

来自分类Dev

在字符串连接中使用 super 时编译失败

来自分类Dev

如何在字符串连接中使用if条件

来自分类Dev

使用函数的 C 字符串连接

来自分类Dev

constexpr c字符串连接,在constexpr上下文中使用的参数

来自分类Dev

有关在C中使用文件和I / O系统调用的基本问题(在Linux / UNIX上)

来自分类Dev

使用变量和字符串连接引用 Firebase 数据库

来自分类Dev

如何在Bash中使用任意数量的参数调用某些东西而没有eval和字符串连接

来自分类Dev

如何在Excel公式中使用相对字符数的字符串连接?

来自分类Dev

在 Java 中使用变量的基本方程问题

来自分类Dev

在AngularJS的HTML img src中使用字符串连接

来自分类Dev

如何在Yaml中使用常量字符串连接参数值

来自分类Dev

尝试在字符串连接中使用require时得到“ TransformError:无效调用”

来自分类Dev

在Python中使用字符串连接函数时如何跳过“ \ n”?

来自分类Dev

如何在Postgres查询中使用字符串连接regclass名称

来自分类Dev

在for循环中使用字符串连接时的异常行为

来自分类Dev

版本1.12.1中使用字符串连接的jQuery属性选择器

来自分类Dev

在ng-model指令中使用字符串连接表达式

来自分类Dev

在Webpack中使用require('...')和变量以及在字符串中使用字符串

来自分类Dev

如何在连接字符串中使用变量?

来自分类Dev

在使用中使用or /和

来自分类Dev

在C ++中使用“使用”

来自分类Dev

在c中使用'?? =','?? <'和'??>

来自分类Dev

使用宏进行字符串连接

来自分类Dev

在字符串中使用文字'@'和变量

来自分类Dev

PHP在字符串中使用变量

来自分类Dev

在C中使用##运算符连接字符串

来自分类Dev

在MySql连接字符串中使用密码?C#

Related 相关文章

  1. 1

    在字符串连接中使用foreach

  2. 2

    在xmltable中使用“字符串连接”时出错

  3. 3

    在字符串连接中使用 super 时编译失败

  4. 4

    如何在字符串连接中使用if条件

  5. 5

    使用函数的 C 字符串连接

  6. 6

    constexpr c字符串连接,在constexpr上下文中使用的参数

  7. 7

    有关在C中使用文件和I / O系统调用的基本问题(在Linux / UNIX上)

  8. 8

    使用变量和字符串连接引用 Firebase 数据库

  9. 9

    如何在Bash中使用任意数量的参数调用某些东西而没有eval和字符串连接

  10. 10

    如何在Excel公式中使用相对字符数的字符串连接?

  11. 11

    在 Java 中使用变量的基本方程问题

  12. 12

    在AngularJS的HTML img src中使用字符串连接

  13. 13

    如何在Yaml中使用常量字符串连接参数值

  14. 14

    尝试在字符串连接中使用require时得到“ TransformError:无效调用”

  15. 15

    在Python中使用字符串连接函数时如何跳过“ \ n”?

  16. 16

    如何在Postgres查询中使用字符串连接regclass名称

  17. 17

    在for循环中使用字符串连接时的异常行为

  18. 18

    版本1.12.1中使用字符串连接的jQuery属性选择器

  19. 19

    在ng-model指令中使用字符串连接表达式

  20. 20

    在Webpack中使用require('...')和变量以及在字符串中使用字符串

  21. 21

    如何在连接字符串中使用变量?

  22. 22

    在使用中使用or /和

  23. 23

    在C ++中使用“使用”

  24. 24

    在c中使用'?? =','?? <'和'??>

  25. 25

    使用宏进行字符串连接

  26. 26

    在字符串中使用文字'@'和变量

  27. 27

    PHP在字符串中使用变量

  28. 28

    在C中使用##运算符连接字符串

  29. 29

    在MySql连接字符串中使用密码?C#

热门标签

归档