C++ 整数在for循环中更改值而不更改它
我真的不知道为什么会这样,你们能帮忙吗?我甚至将长度设为常数,因为我认为这可能是个问题,但它仍然会发生,所以我真的不知道。 所以问题是,我将length1定义为4,但是在for循环中执行几次之后,值只是随机变化C++ 整数在for循环中更改值而不更改它,c++,C++,我真的不知道为什么会这样,你们能帮忙吗?我甚至将长度设为常数,因为我认为这可能是个问题,但它仍然会发生,所以我真的不知道。 所以问题是,我将length1定义为4,但是在for循环中执行几次之后,值只是随机变化 #include <iostream> #include <string> using namespace std; int uppercase[26] = {65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81
#include <iostream>
#include <string>
using namespace std;
int uppercase[26] = {65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90};
int lowercase[26] = {97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122};
string test;
int entered_text[] = {};
int length = 0;
int length1 = 0;
int main() {
cout << "Enter Text:" << endl;
getline (cin, test);
length = test.size();
length1 = 4;
cout << test<< endl;
for (int i = 0; i < length1; i++){
entered_text[i] = test[i];
}
cout << entered_text[0] << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int大写字母[26]={65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90};
int小写字母[26]={97,98,991001011021031041051061071081091101111121131151161118119120121122};
串试验;
int输入的_text[]={};
整数长度=0;
int length1=0;
int main(){
CUT< P>通过查看代码,你似乎正在接近这个问题,就像你在JavaScript中编码和使用对象一样。显然,C++没有像JavaScript一样接近对象(不在同一个地方)。
这是一个你可以做的例子,我不明白你在做什么,但是我相信你可以实现动态数组和指针来解决你所遇到的问题。用C++指针和C++动态数组来阅读。下面是一些“粗略”的代码,希望能让你走上:< /P>
int main() {
cout << "Enter Text:" << endl;
getline (cin, test);
cout << test<< endl;
length = test.size();
// Create dynamic array and have this array the size of your string.
// Also, initialize a pointer to point to the address of your new array
int *enteredText;
enteredText = new char [length];
int *save = enteredText;
// Iterate over the array “entered_text” and assign it values
for (int i = 0; i < length; i++){
*entered_text = test[i];
entered_text++;
}
// now print chars
for (int i = 0; i < length; i++){
cout << *save << endl;
save++;
}
return 0;
intmain(){
CUT< P>不要让每个变量使用全局,最好是保持本地的,如果没有其他的理由,在C++中,你必须告诉你的编译器的数组大小,或者使用分配,但是我建议使用<代码> STD::vector < /COD> < /P>将你的代码作为文本SO@Tarik是的,我意识到我在发帖后忘了这么做请在此处添加您的解释…而不是链接到video@Tarik好的,是的that@YoupLamb我认为您的问题是,您为固定大小的数组(entered_text
)分配了零内存,在循环中,您正在越过该数组的边界并更改以下内存(length
和length1
可能)而不是数组。您应该使用std::vector
进行字符输入,或者分配足够的字节量进行输入(例如int-entered_-text[256]={};
。如何初始化数组无关紧要。用法总是一样的。养成用有意义的值初始化对象的习惯,而不是以后分配初始值。在这种情况下,这意味着将int*enteredText;enteredText=new char[length];
更改为int*enteredText=new char[length]
。完成后不要忘记删除数组。此外,您不需要执行保存和输入的文本+
两步操作;您可以使用输入的文本[i]
索引到数组中,或者使用std::copy
更好。