文字列を16進数に変換するはずのC++プログラムを実行しています。それはコンパイルされますが、実行時のエラーは次のようになります。C++添え字範囲外
デバッグアサーションが失敗しました! (ああ!)
のVisual Studio2010 \ 1440
式
ラインをXSTRING \含まれます:文字列の添字範囲
のうち、そして、私は中止する選択肢がない...それはそうですそれはエラーの時点までそれを変換するので、私は何が起こっているのか分からない。私のコードはシンプルです:
#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;
}
このプログラムは、各文字を16進数に変換する必要があります。
ああ、なぜそれがコンパイルされ、そんなに奇妙なエラーメッセージが出るのですか? (thanks btw) –
@ Howdy_McGeeコンパイラは実行時エラーを探すはずなので、 'while'式に定数またはローカル変数がある場合、警告が表示されることに注意してください。しかし、関数呼び出しによって、データが変更される可能性があるとコンパイラは判断します。 – littleadv