c++ - 从输入文件 C++ 中读取,用逗号分隔
问题描述
我是 C++ 的初学者。我有一个以下格式的输入文件(它以一个新的空行开头,然后是一堆字符串(例如 117b、44b、...、197f、f),用逗号分隔,这些字符串可能跨越一行,如下所示然后是 2 个线程数(例如 10、15),然后是一些函数调用):
"
117b,44b,19r,9b,6r,f,f,f,41b,21r,f,f,f,89r,72b,f,75r,f,f,96b,92r,f,f,101r,f, f,146b,133b,126r,f,f,145r,f,f,186b,185r,f,f,197f,f
搜索主题:10
修改线程数:15
插入(150) || 插入(25) || 插入(163) || 删除(25) || 删除(6) || 搜索(101) || 搜索(163) || 搜索(6)
"
我想读取文件并将从 117b 到 f 的字符串存储在字符串数组(或向量)中,以便数组看起来像这样 = ["117b","44b","19r",...,"197f “,“F”]。然后我想将搜索线程的数量存储在一个 int 变量中,并将修改线程的数量存储在另一个 int 变量中。我尝试使用 get line 函数从文件中读取并用逗号分割,然后是数组中的最后一个元素不会只是“f”,因为它会继续阅读,因为最后一个“f”的末尾没有逗号。任何想法如何做到这一点?
解决方案
一旦没有更多逗号分隔的标记要读取,您可以使用调用getline()
和 a来停止。std::stringstream
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::string str = "117b,44b,19r,9b,6r,f,f,f,41b,21r,f,f,f,89r,72b,f,75r,f,f,96b,92r,f,f,101r,f,f,146b,133b,126r,f,f,145r,f,f,186b,185r,f,f,197f,f";
std::vector<std::string> tokens;
std::stringstream ss(str);
std::string token;
while (getline(ss, token, ',')) //delimit on comma
tokens.push_back(token);
for (std::size_t i = 0; i < vect.size(); i++)
std::cout << vect[i] << std::endl;
}
推荐阅读
- extjs - 在 IE11(非 Edge 模式)中在 Windows 10 上呈现时 ExtJS 6 数据视图中的问题
- ios - How can you handle orientation change with UIScrollView in Swift?
- php - Undefined variable: sales_chart (Laravel Chart)
- hibernate - 我在多对多(Spring Boot)中更新对象有问题
- python - How do I get these 2 cases to pass in my code?
- javascript - 从(换行符:正常)html中获取特定行
- c# - mscorlib 上的警告 MSB3258 以供共享参考
- html - Beautiful Soup Prettify(formatter = 'xml') 已弃用?
- go - 如何在 GO 中将 interface{} 转换为地图
- python-3.x - Python3 追溯问题