C++读取txt并将每一行放入动态数组
C++ Read txt and put each line into Dynamic Array
我正在尝试读取 input.txt 文件,并尝试将每一行作为字符串放入数组(稍后我将使用数组的每个元素来初始化 obj 这就是为什么我将每一行放入数组).
string* ptr = new string;
// Read Mode for Input
fstream input;
input.open("input.txt", ios::in);
int size = 0;
if (input.is_open()) {
string line;
while (getline(input, line)) {
cout << line << endl;
ptr[size] = line;
size++;
}
input.close();
}
for (int i = 0; i < size-1; i++) {
cout << "array: " << ptr[i] << endl;
}
我得到的错误是:
Proxy Allocated, drain it
不要使用数组;使用 std::vector
。 std::vector
的行为类似于数组并使用动态内存:
std::string s;
std::vector<std::string> database;
while (std::getline(input, s))
{
database.push_back(s);
}
保持简单。 :-)
如评论中所述,如果您不知道文件中有多少行,那么您需要一个在运行时根据请求增长的容器。自然的选择是 std::vector :
std::fstream input("input.txt", std::ios::in);
std::vector<std::string> lines;
std::string line;
while (getline(input, line)) {
lines.push_back(line); // std::vector allocates more memory if needed
}
for (int i = 0; i < lines.size(); i++) {
std::cout << lines[i] << std::endl;
}
我正在尝试读取 input.txt 文件,并尝试将每一行作为字符串放入数组(稍后我将使用数组的每个元素来初始化 obj 这就是为什么我将每一行放入数组).
string* ptr = new string;
// Read Mode for Input
fstream input;
input.open("input.txt", ios::in);
int size = 0;
if (input.is_open()) {
string line;
while (getline(input, line)) {
cout << line << endl;
ptr[size] = line;
size++;
}
input.close();
}
for (int i = 0; i < size-1; i++) {
cout << "array: " << ptr[i] << endl;
}
我得到的错误是:
Proxy Allocated, drain it
不要使用数组;使用 std::vector
。 std::vector
的行为类似于数组并使用动态内存:
std::string s;
std::vector<std::string> database;
while (std::getline(input, s))
{
database.push_back(s);
}
保持简单。 :-)
如评论中所述,如果您不知道文件中有多少行,那么您需要一个在运行时根据请求增长的容器。自然的选择是 std::vector :
std::fstream input("input.txt", std::ios::in);
std::vector<std::string> lines;
std::string line;
while (getline(input, line)) {
lines.push_back(line); // std::vector allocates more memory if needed
}
for (int i = 0; i < lines.size(); i++) {
std::cout << lines[i] << std::endl;
}