std::strings 有啥问题

Posted

技术标签:

【中文标题】std::strings 有啥问题【英文标题】:What's wrong with std::stringsstd::strings 有什么问题 【发布时间】:2016-12-28 12:44:07 【问题描述】:

您好,我是 C++ 和 Code::Block 的新手

我正在尝试使用字符串编写一个简单的代码来测试它。 当我编译代码时没有问题,但是当我尝试调试它时,Code::Block 给了我以下警告:

无法打开文件: 文件:../../../../../src/gcc-4.9.2/libgcc/unwind-sjlj.c

Info: "多个信息窗口显示相同的消息 被压制了。”

错误图片仅供参考:

部分代码给我一个错误。

主函数内部

#include <iostream>
#include <string>


int main ()

     std::mystring("What's wrong with strings");  

     return 0;  

我意识到只有在我尝试调试字符串或包含字符串的文件时才会出现此错误。

任何帮助将不胜感激。

其他一些可能有帮助的信息:

代码::Block 16.01

编译MinGW gcc4.9.2

Windows 7 专业版 32 位 SP1

【问题讨论】:

我很惊讶你的代码可以编译。不应该!您确定了解编译代码的含义吗? 您发布的代码无法编译。没有名为 std::mystring 的类或函数。 那么在下面的答案之后,你的代码现在可以工作了吗? 【参考方案1】:

首先,要使用字符串,您必须包含文件头string。并且类型字符串的名称是..std::string,而不是std::mystring。

#include <string>

int main(int argc, char** argv)

    std::string mystring("Nothing's wrong with strings"); 
    return 0;  

【讨论】:

我在我的程序中添加了它,我只是忘记在我的帖子中添加它,我现在会编辑它 @Adam 文件头 iostream 在您的代码中不是必需的。 iostream 用于输入和输出流。【参考方案2】:
#include <iostream>

using namespace std;

int main ()

     string mystring = "Whats wrong with my string";

     return 0;  

如果你按以下方式编写它,它应该可以工作。 像我展示的那样定义字符串更安全。如果您是 C++ 新手,在每个程序的开头添加 using namespace std 也会更容易。

【讨论】:

我认为不建议添加using namespace std,因为它会将std命名空间中的所有代码添加到我代码的全局空间中。不管怎样,在std::string 之前我确实使用过using namespace std,但它也有同样的错误。 @Adam 你是对的。在全局命名空间中添加 using namespace std; 不是一个好习惯。可以在main函数中添加using std::string; 我确实在主目录中使用了std::string,但我仍然得到同样的错误。键入 using namespace std using std::stringstd::string 不会改变结果,因为代码编译没有错误,并给出想要的结果。正是当我尝试调试它时才会出现此警告。 这很奇怪。如果你编译我上面写的完全相同的代码,看我的伪代码找到它,你能调试它吗?可能是调试器配置的问题。 您是创建了一个项目,还是在编译和调试单个文件? Debugging_with_Code::Blocks

以上是关于std::strings 有啥问题的主要内容,如果未能解决你的问题,请参考以下文章

比较两个 std::strings 以查看它们是不是匹配 c++ [关闭]

在内存中操作 std::strings 的 2D 动态数组的最有效方法是啥?

用字符串文字初始化时,std::strings 是不是以 '\0' 结尾?

string类

使用运算符 << 将 std::strings 推送到向量中

使用 std::strings 而不是 char 数组的 WinAPI 文件输入/输出?