回答
我假设字段之间用条分隔,但记录之间用换行符分隔。
首先,在使用std::getline
的文本行阅读:
std::string line;
std::getline(std::cin, line);
然后,断行的|
学边界。
std::stringstream sline(line);
std::string field;
std::getline(sline, field, '|');
...
std::getline(sline, field, '|');
OP,如果您正在阅读文件,请使用文件流的名称而不是cin – Robotnik 2012-04-24 06:25:28
@Robotnik,我同意。另外,如果OP指出这不是作业,我会提出一个更完整的代码示例。 – 2012-04-24 06:26:56
假设你有一个名为 “FILE.DAT”
它看起来像这样的文件:
item1|item2|item3|item4|item5|item6
该程序将打印出的每个项目在文件中:
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
int main(){
std::ifstream infile("file.dat");
std::string item;
getline(infile,item,'|');
while (!infile.eof()){
std::cout << item << std::endl;
getline(infile,item,'|');
}
return EXIT_SUCCESS;
}
我从来不推荐使用'.eof()'作为循环条件。它几乎总是产生错误的代码。虽然你的代码似乎是个例外,但我仍然推荐使用易于阅读的:'std :: string item; while(std :: getline(infile,item,'|')){std :: cout << item <<“\ n”; }' – 2012-04-24 13:56:37
根据对于您使用的代码的复杂性,您要查找的是CSV(逗号分隔值)文件读取器的变体。有成千上万在那里,如果你的代码需要强大的,我建议你使用其中的一种,而不是写自己因为有复杂如:
- 如果你的“价值”的一个实际上包含一个'|' 中的字符是什么引号?
- 如果您的某个'值'包含回车 或换行符,该怎么办?
其中最受欢迎的是Boost tokeniser这应该很容易起床和使用。你只需要确保你告诉记号器你正在使用'|'作为现场分隔者。
查看this related question了解更多指针。
- 1. 阅读文本分隔文件C
- 2. 阅读rho分隔文件
- 3. 阅读由换行符和逗号分隔的txt文件
- 4. C#阅读从逗号分隔文本文件到Windows窗体
- 5. JavaFX应用程序:在阅读文件时显示酒吧进度
- 6. 阅读与反斜线(\)分隔符C++输入文件
- 7. 阅读逗号分隔文件,并将数据放入ListView - C#
- 8. 在matlab中分组酒吧
- 9. CSS百分比酒吧
- 10. CSS topbar:垂直分隔符包装了酒吧的内容
- 11. C++酒吧功能参数
- 12. 如何阅读仅由LF分隔的文件中的每一行?
- 13. Android - 如何添加分隔符/分隔符在底部酒吧导航
- 14. 阅读逗号分隔值
- 15. Java的阅读大量文本文件分隔符
- 16. 在C++中读取分隔文件
- 17. 版本控制网站插件(例如Wibiya酒吧,Meebo酒吧)
- 18. 阅读文件和分裂与分隔符
- 19. DNN假面酒吧模块路由
- 20. CSS浮动文本酒吧
- 21. C阅读文本文件
- 22. 使用的OleDbConnection阅读制表符分隔的文件
- 23. 删除酒吧
- 24. UITab酒吧Contorller
- 25. 酒吧图
- 26. 酒吧matplotlib/python
- 27. Flot Stacked酒吧
- 28. 阅读逗号分隔文本文件到数组
- 29. 阅读制表符分隔文本文件
- 30. 阅读文本文件与分隔符在PHP
[你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-04-24 06:20:17
欢迎来到StackOverflow。你能提供你描述的输入样本吗?另外,如何在输入中处理换行符?作为记录分隔符,还是作为字段中的数据? – 2012-04-24 06:20:44
阅读它就像你会任何其他文件。或者改述你的问题。 – juanchopanza 2012-04-24 06:21:40