我正在运行一个C++程序,它应该将字符串转换为十六进制。它编译了,但在运行时出错,显示:
这个程序的作用是将每个字母逐个转换为十六进制。
Debug Assertion Failed!(哦,不!)
Visual Studio2010\include\xstring
Line 1440
Expression: string subscript out of range
而且我别无选择,只能终止程序... 它似乎已经把字符串转换成了十六进制,但我不确定发生了什么。我的代码很简单:
#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;
}
这个程序的作用是将每个字母逐个转换为十六进制。
while
表达式中有一个常量或局部变量 - 您将会收到一个警告。但是函数调用会让编译器假设数据可能会改变。 - littleadv