标识符 "numIDs" 在范围内时未定义
identifier "numIDs" is undefined while inside of scope
我正在编写一个小应用程序,它应该从文本文件中获取一串数字,然后将它们保存到一个数组中,最后通过迭代打印该数组,该文件应采用以下格式:
10 0 1 2 3 4 5 6 7 8 9
第一个数字是数组中应包含的数字或“ID”的数量,其余数字是数组中的元素。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream test;
test.open("test.txt");
string s;
getline(test, s);
int numtest = s[0];
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
int numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
}
test.close();
for (int i = 0; i <= numIDs; i++) {
cout << arrayIDs[i];
}
}
但是,我得到了错误
identifier "numIDs" is undefined
identifier "arrayIDs" is undefined
分别在第 22 行和第 23 行,虽然我不知道为什么,但据我了解,因为这 2 个是变量,所以 #include
应该没有任何问题,并且都在 main()
函数中,所以我不明白为什么它们会是未定义的。
放置在循环内的变量在循环外是不可见的。因此,要解决您的问题,请在循环外而不是在循环内声明 numIDs。此外,从外观上看,您可能希望将第二个循环放在第一个循环中。
原文:
int numtest = s[0];
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
int numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
}
修订:
int numtest = s[0];
int numIDs = 0;
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
for (int i = 0; i <= numIDs; i++) {
cout << arrayIDs[i] << ' ';
}
}
我正在编写一个小应用程序,它应该从文本文件中获取一串数字,然后将它们保存到一个数组中,最后通过迭代打印该数组,该文件应采用以下格式:
10 0 1 2 3 4 5 6 7 8 9
第一个数字是数组中应包含的数字或“ID”的数量,其余数字是数组中的元素。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream test;
test.open("test.txt");
string s;
getline(test, s);
int numtest = s[0];
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
int numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
}
test.close();
for (int i = 0; i <= numIDs; i++) {
cout << arrayIDs[i];
}
}
但是,我得到了错误
identifier "numIDs" is undefined
identifier "arrayIDs" is undefined
分别在第 22 行和第 23 行,虽然我不知道为什么,但据我了解,因为这 2 个是变量,所以 #include
应该没有任何问题,并且都在 main()
函数中,所以我不明白为什么它们会是未定义的。
放置在循环内的变量在循环外是不可见的。因此,要解决您的问题,请在循环外而不是在循环内声明 numIDs。此外,从外观上看,您可能希望将第二个循环放在第一个循环中。 原文:
int numtest = s[0];
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
int numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
}
修订:
int numtest = s[0];
int numIDs = 0;
for (int i = 0; i < numtest; i++) {
string currLine;
getline(test, currLine);
numIDs = currLine[0];
int arrayIDs[numIDs];
for (int j = 2, k = 0; j < numIDs; j += 2, k++) {
arrayIDs[k] = currLine[j];
}
for (int i = 0; i <= numIDs; i++) {
cout << arrayIDs[i] << ' ';
}
}