【发布时间】:2021-08-19 22:03:18
【问题描述】:
我有一个 .txt 文件:
A:One:1:2:15.
B:Two:0:6:5.
C:Three:0:4:6.
D:Four:0:4:8.
E:Five:0:6:2.
我需要读取文件,并将 (:) 之间的每个值分配给适当的变量。
到目前为止,这是我的代码:
int main()
{
ifstream theFile("Parts.txt");
if(theFile.is_open())
{
string line;
while(getline(theFile, line))
{
stringstream ss(line);
string code;
string partName;
int minimum;
int maximum;
int complexity;
getline(ss, code, ':');
getline(ss, partName, ':');
getline(ss, minimum, ':');
getline(ss, maximum, ':');
getline(ss, complexity, ':');
cout << code << partName << minimum << maximum << complexity << "\n";
}
}
return 0;
}
这是我得到的错误:
a1.cpp:27:13: error: no matching function for call to 'getline'
getline(ss, minimum, ':');
a1.cpp:28:13: error: no matching function for call to 'getline'
getline(ss, maximum, ':');
a1.cpp:29:13: error: no matching function for call to 'getline'
getline(ss, complexity, ':');
我对 c++ 很陌生,因此非常感谢任何帮助!
【问题讨论】:
-
在互联网上搜索“C++ 读取文件冒号分隔值”或“C++ 读取文件 CSV”。 StackOverflow 和互联网上都有大量此类问题。
-
查看
std::getline的声明。注意code和partName是字符串,但minimum、maximum和complexity不是字符串;然而这些正是编译器所抱怨的。 -
您可以使用
char colon;,然后在阅读partName 后使用ss >> minimum >> colon;。 -
string minimum_str; getline(ss, minimum_str, ':'); minimum = stoi(minimum_str);
标签: c++ filestream