rt,谢谢
简单,
就一行,一行的,然后每行中每个数据之前用一个字符分隔开来,调用的时候用函数
分别读取。
给你举个例子,你的CSV文件中有两行字符:每行有10个数据,用逗号隔开
每行的数据用逗号隔开
13245545,2023.03.23 20:12:16,0,0.01,EURUSD,1.02892,1.02092,1.03892,123456,Testing_buy
13245548,2023.03.23 20:13:19,1,0.01,EURUSD,1.02922,1.03092,1.02092,123456,Testing_sell
就一行,一行的,然后每行中每个数据之前用一个字符分隔开来,调用的时候用函数
int StringSplit( const string string_value, // 字符串搜索 const ushort separator, // 被搜索子字符串使用的分隔符 string & result[] // 通过引用传递数组得到寻找的子字符串 );
分别读取。
给你举个例子,你的CSV文件中有两行字符:每行有10个数据,用逗号隔开
每行的数据用逗号隔开
13245545,2023.03.23 20:12:16,0,0.01,EURUSD,1.02892,1.02092,1.03892,123456,Testing_buy
13245548,2023.03.23 20:13:19,1,0.01,EURUSD,1.02922,1.03092,1.02092,123456,Testing_sell
ushort separator = StringGetCharacter(",", 0); // 定义标界符号 string file_name = "sample.csv"; // 文件名 int file_handle = FileOpen(file_name, FILE_READ | FILE_CSV); // 读取模式为csv if(file_handle != INVALID_HANDLE) // 如果打开文件成功 { static long last_change_time = 0; // 记录文件最后被修改的时间 long file_change_time = FileGetInteger(file_handle, FILE_MODIFY_DATE); // 获取文件被修改的时间 if(file_change_time != last_change_time) // 如果文件被修改就读取一次,避免不断读取而占用系统资源 { while(!FileIsEnding(file_handle)) // 开始读取,直到文件的最后一行停止 { string row_string = FileReadString(file_handle); // 获取每行的字符串 if(row_string != NULL) // 如果字符串不为空 { string data[]; // 创建存储的数组 int count = StringSplit(row_string, separator, data); // 分隔字符串,以逗号为标界 if(count > 0) // 如果分隔的数量大于0 { long ticket = StringToInteger(data[0]); // 分别从数组中获取数据 long time = StringToInteger(data[1]); long type = StringToInteger(data[2]); double volume = StringToDouble(data[3]); string symbol = data[4]; double price = StringToDouble(data[5]); double sl = StringToDouble(data[6]); double tp = StringToDouble(data[7]); long magic_number = StringToInteger(data[8]); string comment = data[9]; } } } last_change_time = file_change_time; // 更新文件最后修改时间 } FileClose(file_handle); // 关闭文件 }