我正在尝试解析文本文件的行,然后将它们存储在vector<string>
. 我来自 Java 背景,对 C++ 如何处理将内容分配给缓冲区的值感到困惑。这是我的代码:
string line;
vector<string> adsList;
ifstream inputFile;
inputFile.open("test.txt");
while(getline(inputFile, line))
{
adsList.push_back(line);
}
在 Java 中,当向数据结构添加对象时,会创建对象的副本,然后插入该副本。在 C++ 中,我的理解是数据结构只保存引用,因此任何操作都非常快。在 C++ 中实现我想要做的事情的正确方法是什么?我还尝试了以下代码:
vector<string> adsList;
string line;
ifstream inputFile;
inputFile.open("test.txt");
while(getline(inputFile, line))
{
string *temp = new string;
*temp = line;
adsList.push_back(*temp);
}
我的理由是,创建一个新的字符串对象并存储它会在每次循环迭代被销毁后保留它。C++ 似乎处理这个与 Java 完全相反的问题,我很难理解它。
编辑:这是 test.txt 的样子:
item1 item1 item1
item2 item2 item2
item3 item3 item3
item4 item4 item4
我试图将每一行存储为一个字符串,然后将字符串存储在我的向量中。所以向量的前面会有一个值为“item1 item1 item1”的字符串。