我正在运行一个C++程序,该程序应该将字符串转换为十六进制。它汇编了运行时出错的错误信息:C++超出下标范围
Debug Assertion Failed! (哦不!)
视觉Studio2010 \包括\ xstring
线1440
表达:串标超出范围
而且我没有选择放弃......这似乎就像它将它转换为错误点,所以我不确定发生了什么。我的代码很简单:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
string hello = "Hello World";
int i = 0;
while(hello.length())
{
cout << setfill('0') << setw(2) << hex << (unsigned int)hello[i];
i++;
}
return 0;
}
该程序应该做的是将每个字母转换为十六进制 - char by char。
哦哇,为什么会编译然后给出这样一个奇怪的错误信息? (谢谢btw) – 2012-04-17 06:17:19
@Howdy_McGee因为编译器不应该查找运行时错误。请注意,如果你在'while'表达式中有一个常量或局部变量 - 你会得到一个警告。但是函数调用会使编译器假定数据可能会改变。 – littleadv 2012-04-17 06:23:35