用c++分析.dat文件
Parse a .dat file in c++
我有一个.dat文件,但每一行都不同。我的意思是有一条带double
的线和一条带string的线。
我可以读取文件,甚至可以解析它,但字符串出现了问题。如果我有一行只有"a"作为字符串,它会给我一个带空格的字符串。我没有知道出了什么问题,但这是
我的代码:
ifstream file;
file.open(name,ios::in|ios::binary);
vector<string> strings;
string line;
if (file.is_open())
{
while(file.good())
{
vector<double> vdoubles;
getline(file,line,'n');
stringstream ss(line);
double num= 0.0;
string str = ss.str();
if (! (ss >> num)) // if this is a string and not double
{
strings.push_back(str);
}
else
{
do
{
vdoubles.push_back(num);
}while ( ss >> num);
}
}
}
.dat文件示例:
A
0.02 0.4 0.6
BC
0.45 0.5 0.8
当我调试时,我会看到字符串向量应该是什么样子,但当我打印向量时,它会在向量的元素之间打印出空格,即使我将其打印为
for (int i = 0; i < strings.size(); i++)
cout << strings[i];
cout << endl;
为什么它也给了我空间?
好的,所以答案是不能使用相同的字符串流来解析不同的类型。这就是的解决方案
if (! (ss >> num)) // if this is a string and not double
{
stringstream l;
l << line;
l >> str;
strings.push_back(str);
}
else
{
do
{
vdoubles.push_back(num);
}while ( ss >> num);
}
相关文章:
- 文件中.dat Dlib 选项
- 在 c++ 中读取和写入.dat文件
- 在 c++ 中错误地读取.dat文件
- 使用ifstream从DAT文件加载数据
- 从函数中的dat文件创建一个2维数组
- (C++) 如何从要存储在结构数组中的二进制文件中读取.dat信息?
- 无法读取一个.dat文件以创建第二个.dat文件
- 读取.DAT文件并创建一个数组C
- 无法读取 Ubuntu "Segmentation fault (core dumped)"中的.dat或.bin文件
- 读取和写入.dat文件
- 如何返回文件中项目的索引.dat
- 使用 std::write 和 std::read C++ 读取包含 std::string 到.dat文件的结构
- C++:如何将数据输出到多个.dat文件
- 一次读取两个字节的.dat文件
- C++ 如何从.dat文件构建字符串的 2D 矩阵?5 列 x 行
- 为什么我的程序写入.dat文件中的同一行
- 正在从.dat文件中读取2个字节
- 创建.dat文件 (fstream) c++
- 正在从dat文件读取到数组中
- C++ 读取文件.dat中保存的对象