通过使用获取线函数读取文件的有线输出
Wired output by using getline function to read file
我的程序是读取一个包含一些销售记录的文件,并将时间,日期,价格,数量和其他部分分开。然后将它们分别存储在一个向量中。所有记录均为:
10/10/2013 04:57:27 PM,5.81,5000,29050.00,LT XT
2013/10/10 04:48:05 PM,5.81,62728,364449.68,SX XT
2013/10/10 04:10:33 下午,.00,0,.00,
2013/10/10 04:10:33 下午,.00,0,.00,
2013/10/10 04:10:33 下午,.00,0,.00,
5 行。
那么我的代码是:
void main()
{
vector<string> date, time, price, volume, value, condition;
int len;
load(date,time,price,volume,value,condition);
len = date.size();
for (int i=0 ; i<len ; i++)
{
cout << date[i] << endl;
}
cout << "****************************" << endl;
for (int i=0 ; i<time.size() ; i++)
{
cout << time[i] << endl;
}
}
函数负载的定义是:
void load(vector<string> &object1,
vector<string> &object2,
vector<string> &object3,
vector<string> &object4,
vector<string> &object5,
vector<string> &object6)
{
string str1,str2,str3,str4,str5,str6;
string filename;
cout << "Enter name of file to read (one word only): ";
cin >> filename;
ifstream fptr(filename);
if (fptr.rdstate() == 0) // no error open file
{
while (!fptr.eof())
{
getline(fptr,str1,' ');
object1.push_back(str1);
getline(fptr,str2,',');
object2.push_back(str2);
getline(fptr,str3,',');
object3.push_back(str3);
getline(fptr,str4,',');
object4.push_back(str4);
getline(fptr,str5,',');
object5.push_back(str5);
getline(fptr,str6,',');
object6.push_back(str6);
}
}
else
{
cerr << "Could not open file "" << filename << "" for reading." << endl;
}
cout << "- after load function" << endl;
}
然后我得到下面的有线结果。我不知道我错在哪里。
矢量日期的结果(4 个结果,应该是 5 个并混淆了所有内容):
2013/10/10
5.81,62728,364449.68,SX
.00,0,.00
2013/10/10
向量时间的结果(相同的问题):
04:57:27下午
XT
2013/10/10 04:10:33
04:10:33下午
你永远不会用'n'
作为终结者做getline
,所以这个将像任何其他字符一样阅读,作为"行"。
我个人在这里的偏好是循环阅读完整的一次行,然后使用 std::regex
(或 boost::regex
) 到将其分成字段。 这确保了如果任何事情发生一行出错,立即重新同步在下一行正确。
换句话说,当你第一次打电话给load
时,当你阅读条件(最后一个字段),您读取"LT XTn10/10/2013 04:48:05 PM"
。 和下一个电话load
,当你试图得到日期,您将阅读"5.81,62728,364449.68,SX"
,即说,直到下一个空白。
- 如何在 的开头<x>和结尾<y>之间更改带有文件输出的字符串的值
- C++对象数组的文件输出
- bcdedit 文件输出不起作用,但其他命令可以
- 如何从文本文件输出数据?(学生成绩单计划)
- 使用 C++文件 I/O 输出 pdf 文件
- C 文件输出垃圾
- 从堆栈中读取字符后,如何修复不正确的文件输出
- C++:具有随机名称的文件输出
- 在命令提示符下看到换行符,但在文件输出中可以看到 相同的字符串
- 生成文件不会生成预期的文件输出
- C++11 fgetc 在"r+b"模式下使用时向我的文件输出 0
- 使用函数从文件输出
- GCC.obj文件输出不具有确定性(.debug_info,PROGPITS部分)
- C cstdiofile :: Writestring给出了不正确的文件输出
- C 输出:STD :: COUT和文件输出没有相同的内容
- GCC和MSVC之间的文件输出不一致
- C++文件输出奇怪的数字,并且部分代码没有运行
- 如何将特定字符从TXT文件输出到特定点
- C 调用从TXT文件输出信息的函数
- 将交易从文本文件输出到屏幕