【问题标题】:Appending spaces AND one-word-strings to the end of a string将空格和一个单词字符串附加到字符串的末尾
【发布时间】:2015-09-21 10:32:58
【问题描述】:

我遇到了一个看起来很简单的问题,但我就是无法让它工作。我正在使用标准 C++ 函数 append() 在另一个字符串 (str1) 的末尾添加一个空格、“”和另一个单字字符串 (str2)

当我只附加一个或另一个时,我的代码工作得非常好,即:

str1.append(" ");

或:

str1.append(str2);

但是,当我尝试将两者都附加在一行中时:

str1.append(" ");
str1.append(str2);

我立即收到分段错误。我很困惑它如何处理一个追加,但不是两个!有人看到解决方法吗?

提前致谢!

【问题讨论】:

  • 您的程序远大于 2 行。我敢打赌,str1 和/或 stri2 在您发布的这些行被执行时要么无效要么已损坏。
  • 请发帖MCVE

标签: c++ string append


【解决方案1】:

所以最初 str2 实际上是我存储为字符串的双精度数,它应该仍然有效。但是由于某种原因,即使它是一个字符串,C++ 也不会使用它。因此,我使用 stod(str2) 将 str2 切换回双精度,然后在连接时再次切换回字符串:

str2=stod("stuff");
str1.append(to_string(str2));

不知道为什么这种方法有效,而另一种方法则无效(两种方法都将字符串输入到 append() 中),但它有效!

【讨论】:

  • 这不是答案。当您更改良性代码行时突然“工作”的代码表明内存损坏。所以你真的没有解决任何问题。无论您之前遇到的任何错误都很可能转移到应用程序的另一部分。我建议您将代码改回原来的方式并实际解决问题。
  • 请看这个例子:ideone.com/9K2eT9 你看我得到一个 runitme 错误。现在看这个例子:ideone.com/ks6sXF 没有运行时错误。现在假设我的应用程序要大得多,并且我使用的代码足以在没有实际解决真正问题的情况下不会出现运行时错误,在这种情况下将访问deleted 指针。这就是为什么您的答案无效的原因 - 它没有描述您的解决方案“有效”的实际原因,因此它不是解决方案。
猜你喜欢
  • 2017-04-12
  • 2022-12-11
  • 2021-12-16
  • 2014-03-06
  • 2023-03-12
  • 2017-09-29
  • 2018-03-11
  • 2020-08-19
  • 1970-01-01
相关资源
最近更新 更多