我正在尝试从文本文件中输入数据: 线格式如下...... String | String | int double
实施例: 鲍勃|橘子| 10 .89
我可以使用以字符串形式获取该行 Getline(infile,line)
我不明白如何将这一行分解为字符串变量中的不同变量。
由于
答案 0 :(得分:1)
首先,您可以使用strchr编写一些很好的老式c代码。
如果使用std :: String
,请使用string.find / find_first_ofhttp://www.cplusplus.com/reference/string/string/find_first_of/
答案 1 :(得分:0)
您将此标记为C ++。所以也许你应该尝试使用格式化的提取器......
这是一个' ram'文件(就像磁盘文件一样工作)
std::stringstream ss("Bob|oranges|10 .89");
// this ^^^^^^^^^^^^^^^^^^ puts one line in file
我会使用getline作为两个字符串,使用bar终结符
do {
std::string cust;
(void)std::getline(ss, cust, '|'); // read to 1st bar
std::string fruit;
(void)std::getline(ss, fruit, '|'); // read to 2nd bar
然后直接读取int和float:
int count = 0;
float cost;
ss >> count >> cost; // the space char is ignored by formatted extraction
std::cout << "\ncust: " << cust << "\n"
<< " " << count << " " << fruit
<< " at $" << cost
<< " Totals: " << (float(count) * cost) << std::endl;
if(ss.eof()) break;
}while(0);
如果你要处理更多行,你需要找到eoln,并重复上述风格的每一条记录。
这种方法非常脆弱(格式的任何更改都会强制更改代码)。
这只是为了让你开始。根据我的经验,使用std :: string find和rfind不那么脆弱。
祝你好运。