python - 如何在c ++中有效地从文件中拆分每一行
问题描述
我想处理文件的每一行,然后用分隔符拆分它并获取例如第一个和第三个令牌。
在蟒蛇中,
with open("filename.txt") as f:
for line in f:
tokens = line.split("|")
print(tokens[0], tokens[2])
所以,cpp,我可以用getline
. 像这样:
ifstream fin(f);
string myStr;
while( getline(fin, myStr)){
}
现在,如何拆分 myStr|
并获取令牌?我试图getline(myStr, token, '|')
再次在 while 循环内调用,但它似乎不起作用。有人可以帮忙吗?
谢谢
解决方案
更新:只需要前三到四个令牌
在你的 while 循环中试试这个:
size_t pos = 0;
vector<std::string> tokens;
while ((pos = myStr.find("|")) != std::string::npos) {
tokens.push_back(myStr.substr(0, pos));
myStr.erase(0, pos + delimiter.length());
if(tokens.size() == 4){
break;
}
}
tokens.push_back(myStr)
tokens
并在 while 循环之外和之前初始化:
vector<int> tokens;
此问题答案的修改版本:使用字符串分隔符(标准 C++)在 C++ 中解析(拆分)字符串
推荐阅读
- mysql - 由于约束失败,无法添加或更新子行。父行有数据
- ios - 在 IOS 13.2 MFMailComposeViewController 中没有出现发送和取消按钮
- android - 如何在底部导航活动中制作自动图像滑块?
- arrays - 重建阵列的速度效率
- c++ - CDialog标题/标题的字体样式
- graphviz - boosted树的值是什么意思?
- r - 循环多个矩阵?
- java - 如何在 Java 8 中的 Method_reference 中为用户定义的接口和方法传递参数
- html - 如何在一行中显示 2 个短语,一个居中对齐,另一个在 html 中右对齐?
- ansible - 在 Ansible Playbook 中调用另一个 .yml 文件