【问题标题】:C++ random string values on declaration声明时的 C++ 随机字符串值
【发布时间】:2014-12-18 05:22:42
【问题描述】:

我在使用字符串时遇到了问题。

这是我的 C++ 代码:

string s;
s = "..\inputs\Meknes_ext1\REF_WV02_12SEP15_ext1";

编译成功了,但是在调试的时候,字符串s在第一行取了“hûJ”这样的随机值,然后做作并没有改变他的内容。

我该如何解决这个错误?

【问题讨论】:

  • 可能是转义字符(例如\n是换行),请将\替换为\\。
  • The compilation was successfully done, 没有关于使用非法转义序列的警告?
  • 编译中没有警告,当我用 \\ 替换 \ 时问题仍然存在,即使我输入任何其他字符串,如 s = "hello world" 它只需要 'o world'跨度>

标签: c++ string


【解决方案1】:

你需要对转义字符\进行转义,把这个改成\\

s = "..\\inputs\\Meknes_ext1\\REF_WV02_12SEP15_ext1";

【讨论】:

  • 当我将 \ 替换为 \\ 时问题仍然存在,即使我将任何其他字符串(如 s = "hello world" )也只需要 'o world'。似乎问题出在声明时,将 rondom 值归因于字符串,我不知道为什么
【解决方案2】:

您需要转义 \ 特殊字符。你的字符串必须是这样的:

s = "..\\inputs\\Meknes_ext1\\REF_WV02_12SEP15_ext1";

【讨论】:

  • 当我将 \ 替换为 \\ 时问题仍然存在,即使我将任何其他字符串(如 s = "hello world" )也只需要 'o world'。似乎问题出在声明时,将 rondom 值归因于字符串,我不知道为什么
  • 添加手表时看到的随机值
【解决方案3】:

我发现这个问题只有在调试时才会出现,在执行中,字符串取正确的值,注意我使用的是RelWithDebInfo模式。对此的解释见:Visual Studio: Garbled debug watch of std::string's?

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2010-12-31
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多