C++ 从C+中带引号的CSV/文本文件读取+;
我有一个从文本文件(CSV)中读取行的工作函数,但我需要修改它以能够读取双引号(我需要这些双引号,因为我的一些字符串值包含逗号,所以我使用双引号表示读取函数应该忽略双引号之间的逗号)。是否有一种相对简单的方法来修改下面的函数,以适应某些字段将用双引号括起来的事实 其他一些注意事项:C++ 从C+中带引号的CSV/文本文件读取+;,c++,csv,double-quotes,C++,Csv,Double Quotes,我有一个从文本文件(CSV)中读取行的工作函数,但我需要修改它以能够读取双引号(我需要这些双引号,因为我的一些字符串值包含逗号,所以我使用双引号表示读取函数应该忽略双引号之间的逗号)。是否有一种相对简单的方法来修改下面的函数,以适应某些字段将用双引号括起来的事实 其他一些注意事项: 如果有帮助的话,我可以很容易地将所有字段都用双引号括起来(而不是像目前的情况那样,只使用字符串) 我还可以很容易地将分隔符从逗号改为其他字符(如管道),但如果很容易的话,我希望继续使用CSV 以下是我目前的职能: v
void ReadLoanData(vector<ModelLoanData>& mLoan, int dealnum) {
// Variable declarations
fstream InputFile;
string CurFileName;
ostringstream s1;
string CurLineContents;
int LineCounter;
char * cstr;
vector<string> currow;
const char * delim = ",";
s1 << "ModelLoanData" << dealnum << ".csv";
CurFileName = s1.str();
InputFile.open(CurFileName, ios::in);
if (InputFile.is_open()) {
LineCounter = 1;
while (InputFile.good()) {
// Grab the line
while (getline (InputFile, CurLineContents)) {
// Create a c-style string so we can tokenize
cstr = new char [CurLineContents.length()+1];
strcpy (cstr, CurLineContents.c_str());
// Need to resolve the "blank" token issue (strtok vs. strsep)
currow = split(cstr,delim);
// Assign the values to our model loan data object
mLoan[LineCounter] = AssignLoanData(currow);
delete[] cstr;
++LineCounter;
}
}
// Close the input file
InputFile.close();
}
else
cout << "Error: File Did Not Open" << endl;
void readloanadata(向量&mLoan,整数dealnum){
//变量声明
fstream输入文件;
字符串文件名;
ostringstream s1;
字符串内容;
内线计数器;
char*cstr;
矢量电流;
常量字符*delim=“,”;
s1以下内容适用于给定的输入:a,b,c,“a,b,c”,“a,b”,d,e,f
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
std::string line;
while(std::getline(cin, line, '"')) {
std::stringstream ss(line);
while(std::getline(ss, line, ',')) {
cout << line << endl;
}
if(std::getline(cin, line, '"')) {
cout << line;
}
}
}
#包括
#包括
#包括
使用名称空间std;
int main(){
std::字符串行;
while(std::getline(cin,line,“,”)){
std::stringstream ss(线路);
while(std::getline(ss,line,,')){
不能先用引号分析数据。我可以举一个带引号的行的例子吗?0,1,1.000,LNMLT06C01-1.000001A1,“北角购物中心”例如,5.74359.2006年,85,35,35,-999275,5,5,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,826E+07,2.722289E+077510764,1.971213E+07