gpt4 book ai didi

c++ - C++中如何从txt文件中获取数据

转载 作者:太空狗 更新时间:2023-10-29 21:26:48 24 4
gpt4 key购买 nike

我遇到的问题是我能够创建一个文本文件,一次写入文本。我希望能够在不创建新文件的情况下在必要时向其中添加更多行。我的下一个问题是我似乎无法获得我正在寻找的输出。例如。文本文件包含

start1
fname|lname|ssn
end1

我的目标是仅获取 start1 和 end1 内的数据,并返回 fname lname 和 ssn,不带分隔符 |。这是我的代码

int main()
{
fstream filestr;
string line;

filestr.open ("file.txt", fstream::in | fstream::out | fstream::app);
if(!filestr.is_open())
{
cout << "Input file connection failed.\n";
exit(1);
}
else{
filestr<<"Start2\n";
filestr<< "middle|middle"<<endl;
filestr<<"end2"<<endl;
if(filestr.good()){
while(getline(filestr, line) && line !="end1"){
if(line !="Start1"){
//below this point the output goes screwy
while(getline(filestr, line,'|')){
cout<<"\n"<<line;
}
}
}
}
filestr.close();
}

最佳答案

几乎:

当你打开一个文件进行追加时,读取的位置是在末尾。因此,在开始阅读之前,您需要回到开头(或关闭并重新打开)。

        filestr.seekg(0);

第二个问题是你嵌套的 while 循环不检查结束:

                while(getline(filestr, line,'|')){
cout<<"\n"<<line;

这打破了这条线。但它不会停在行尾。它一直运行直到到达文件末尾。

你应该做的是获取当前行并将其视为自己的流:

            if(line !="Start1")
{
std::stringstream linestream(line);
// ^^^^^^^^^^^^^^^^^^ Add this line

while(getline(linestream, line,'|'))
{ // ^^^^^^^^^^ use it as the stream
cout<<"\n"<<line;
}
}

PS:在文件.txt中

start1
^^^^^ Note not Start1

关于c++ - C++中如何从txt文件中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com