Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 整数在for循环中更改值而不更改它_C++ - Fatal编程技术网

C++ 整数在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

我真的不知道为什么会这样,你们能帮忙吗?我甚至将长度设为常数,因为我认为这可能是个问题,但它仍然会发生,所以我真的不知道。 所以问题是,我将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,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
更好。