将带有引号和逗号的字符串文件读入字符串数组
Read a file of strings with quotes and commas into string array
假设我有一个名称文件,例如:
"erica","bosley","bob","david","janice"
也就是说,每个名称两边用引号引起来,每个名称用逗号分隔,中间没有空格。
我想将这些读入字符串数组,但似乎找不到忽略/获取/获取/获取线/任何组合来工作。 我想这是一个常见问题,但我正在努力在文件 I/O 方面做得更好,但还不太了解。 这是一个基本版本,它只是将整个文件作为一个字符串读取(显然不是我想要的):
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
fstream iFile("names.txt", ios::in);
string names[5];
int index = 0;
while(iFile)
{
iFile >> names[index];
index++;
}
for(int i = 0; i < 5; i++)
{
cout << "names[" << i << "]: " << names[i] << endl;
}
输出:
names[0]: "erica","bosley","bob","david","janice"
names[1]:
names[2]:
names[3]:
names[4]:
另外,我理解为什么它都被读取为单个字符串,但是为什么剩下的元素没有被垃圾填满?
为了清楚起见,我希望输出看起来像:
names[0]: erica
names[1]: bosley
names[2]: bob
names[3]: david
names[4]: janice
最简单的处理方法:
- 读取整个文件并将其放入字符串中,这是如何执行此操作的示例。
- 拆分从数字 1 获得的字符串。下面是如何执行此操作的示例。
流提取由空格分隔。因此,整个文件被读取为一个字符串。相反,您想要的是用逗号分隔字符串。
#include <iostream>
#include <fstream>
#include <algorithm>
#include <sstream>
fstream iFile("names.txt", ios::in);
string file;
iFile >> file;
std::istringstream ss(file);
std::string token;
std::vector<std::string> names;
while(std::getline(ss, token, ',')) {
names.push_back(token);
}
要删除引号,请使用以下代码:
for (unsigned int i = 0; i < names.size(); i++) {
auto it = std::remove_if(names[i].begin(), names[i].end(), [&] (char c) { return c == '"'; });
names[i] = std::string(names[i].begin(), it);
}
remove_if
返回转换字符串的end
迭代器,这就是使用 (s.begin(), it)
构造新字符串的原因。
然后输出它:
for (unsigned int i = 0; i < names.size(); i++) {
std::cout << "names["<<i<<"]: " << names[i] << std::endl;
}
现场示例
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将字符串与文件上的数据进行比较
- 用户输入字符串的文件附加问题..C++
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 使用文件内容作为硬编码字符串
- 将文件复制到自定义位置,存在字符串转换问题
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 在字符串.h文件中调用函数而不带对象
- 将带有引号和逗号的字符串文件读入字符串数组
- 如何从字符串/文件中分离字符和整数
- 将字符串文件存储到动态数组中
- 如何用C++将字符串文件Txt解析成数组
- 如何用Boost::Spirit解析复杂的字符串文件
- 如何从C语言的第二行读取字符串文件
- 一个很好的性能替代PHP-字符串/文件操作