调试 string

转载:https://blog.youkuaiyun.com/flysky_jay/article/details/79441516

调试代码是发现print那行一直输出不确定的乱码,原因在于:printf只能输出C语言内置的数据,而string不是内置的,只是一个扩展的类,这样肯定是链接错误的。

    printf_s("the num of Gangs is : %d\n", gang.size());
        map<string, int>::iterator it = gang.begin();
        for (; it != gang.end(); it++)
        {
            printf("%s %d\n", it->first, it->second);
            cout << it->first << " " << it->second << endl;
        }

现在将代码改为:

    printf_s("the num of Gangs is : %d\n", gang.size());
        map<string, int>::iterator it = gang.begin();
        for (; it != gang.end(); it++)
        {
            printf("%s %d\n", (it->first).c_str(), it->second);
            cout << it->first << " " << it->second << endl;
        }

也就是在string类型后加上c_str(),然后就能够运行了。

当然也可以使用cout进行输出。

### 如何在 Dev-C++ 中调试 `string` 类型变量或解决 `string` 相关问题 #### 1. 关于 `string` 的使用 在 Dev-C++ 中,即使未显式包含 `<string>` 头文件,某些情况下仍可以声明和初始化 `string` 对象。这是因为部分编译器可能已经隐含包含了该头文件或其他依赖库间接引入了它[^1]。然而,为了确保程序的可移植性和兼容性,建议始终显式包含必要的头文件。 ```cpp #include <iostream> #include <string> // 显式包含字符串处理所需的头文件 using namespace std; int main() { string name1 = "Hello"; string name2 = "World"; cout << name1 << " " << name2 << endl; return 0; } ``` 如果遇到与 `string` 使用有关的问题,应确认已正确包含 `<string>` 并检查命名空间是否设置为 `std` 或者通过作用域解析运算符调用函数[^4]。 --- #### 2. 解决 `to_string()` 报错问题 当尝试运行类似 `key += to_string(coding[i])` 的代码时,在默认配置下可能会报错。这是由于 `to_string()` 方法是在 C++11 版本中新增的功能。因此,需手动启用对 C++11 标准的支持: - 打开 **Tools -> Compiler Options**。 - 勾选 **Add the following commands when calling the compiler**。 - 在对应的输入框中填入 `-std=c++11` 参数[^3]。 完成上述操作后重新构建项目即可正常执行涉及 `to_string()` 的逻辑。 --- #### 3. 调试方法概述 对于任何类型的变量(包括但不限于 `string`),都可以利用断点、单步跟踪以及观察窗口来分析其状态变化过程。以下是具体步骤说明(基于一般 IDE 和工具链的行为模式): ##### 设置断点 双击目标行号左侧空白区域或者右键菜单选择相应命令以标记暂停位置。例如,在以下循环之前设定了一个断点以便逐步验证每一层嵌套的结果: ```cpp for (int i = 0; i < n; ++i) {} ``` ##### 启动调试会话 点击工具栏上的绿色三角形按钮旁边的小虫图标启动应用程序进入交互模式而不是直接跳转至结束界面显示最终输出结果。 ##### 查看局部变量值 一旦到达指定地点,则可以通过悬浮鼠标指针到特定表达式上快速预览当前计算所得数值;另外还可以打开专门面板罗列所有活动范围内定义的对象及其属性详情列表供进一步审查之用。 --- #### 4. 安装与基础配置注意事项 Dev-C++ 提供了一个简单易用的学习平台给新手开发者们熟悉C/C++语法结构的同时也具备一定的灵活性满足高级需求比如自定义宏定义或是链接外部动态共享库等等功能特性[^5]。初次使用者应当按照官方文档指示顺利完成软件部署之后再着手调整各项参数设定直至达到理想效果为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值