我在文件中有以下数据:
0001 O 100 102.30
0001 O 101 333.22
0001 O 102 679.13
0001 P 103 513.36
0001 P 104 700.94
使用以下代码:
vector<string> customerID;
vector<char> transactionType;
vector<string> transactionNumber;
vector<double> amount;
string cID, tT, tN, amnt;
for(;infile2 >> cID >> tT >> tN >> amnt;){
customerID.push_back(cID);
transactionType.push_back(tT);
transactionNumber.push_back(tN);
amount.push_back(amnt);
}
和错误:
error: no matching function for call to 'std::vector<char>::push_back(std::string&)'
error: no matching function for call to 'std::vector<double>::push_back(std::string&)'
是否假设每个数据项都是字符串? 我该如何解决这个问题?
答案 0 :(得分:1)
如上所述,您在阅读时使用了四个string
变量。您可以通过声明相应类型的变量来更正它。
vector<string> customerID;
vector<char> transactionType;
vector<string> transactionNumber;
vector<double> amount;
string cID, tN;
char tT;
double amnt;
for(;infile2 >> cID >> tT >> tN >> amnt;){
customerID.push_back(cID);
transactionType.push_back(tT);
transactionNumber.push_back(tN);
amount.push_back(amnt);
}
答案 1 :(得分:1)
是的,确实如此。您正在阅读四个字符串,并且您正在将其中任何字符串转换为其他内容。 C ++没有提供从std::string
到非字符串类型的隐式转换。
解决问题的最简单方法是将tT
和amnt
作为char
和double
阅读。只需将变量声明为
std::string cID, tN;
char tT;
double amnt;
它应该有效。或者,您可以将它们作为字符串读取并转换它们。