【发布时间】:2020-01-21 02:00:48
【问题描述】:
我有以下代码逐行读取文本文件并将数据存储在string* 变量中:
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main(){
// open a file in read mode.
ifstream infile;
infile.open("iris.csv");
// read file line by line and store here:
string *strlist;
int count =0;
for (string line; getline(infile, line); ) {
strlist[count] = line;
count++;
}
infile.close();
//print all lines:
for (int i=0; i<count; i++){
cout << strlist[i];
}
}
上面的工作会不会有一些内存问题。在分配值 strlist[i]=line 之前是否需要创建一个 new 字符串?
我没有尝试过,担心错误可能导致数据损坏。感谢您的帮助。
【问题讨论】:
-
strlist 是未初始化的指针。请改用vector
。 -
是的,矢量非常有用。谢谢。
Vector.push_back是first in, first out还是first in, last out? -
您可以使用 push_back() 和 pop_back() 分别从向量中推送和弹出元素(总是从后面)。从这个角度来看,它是先进后出。但是,您也可以使用擦除删除特定索引(或范围)处的元素。