我正在尝试制作一个将字符串转换为char数组的程序。我的代码看起来像这样(这只是我的代码的一部分):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string Word;
cout << "Type A String And I'll Turn It Into A Char Array ' : ";
cin >> Word;
int Length = Word.length();
char Char_Word[Length];
//Looping To Set The String Characters To A Char Array
for (int CharSet = 0; CharSet <= Length; CharSet++)
{
Char_Word[CharSet] = Word.at(CharSet);
}
}
但是,当我运行此代码并输入时,它会输出以下语句
以类型为std :: out_of_range的未捕获异常终止:basic_string中止
知道为什么会这样。请帮助我修复它,并感谢您阅读它。
您正在写出超出char_word变量范围的内容。
//First make enough space for char_word
int length = word.length()+1;
char Char_word[ length ];
for( int i = 0; i < length - 1; i++)
Char_word[i] = word.at(i);
Char_word[length-1] = '\0'; //very important
在C / C ++中,超出范围的读写是一件坏事。黑客可以利用它来篡改您的程序,这是一个好主意。。。注意:我没有对其进行测试。。。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句