我有一个.dat文件,但每行都不同。
我的意思是有一行double
和一行带字符串。
我可以读取文件,甚至可以解析它,但是字符串出了问题。 如果我有一行只有“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;
那么为什么它也给我空间?
答案 0 :(得分:1)
好的答案是你不能使用相同的字符串流来解析不同的类型。 所以这就是解决方案
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);
}