我有这样的输入:
下面是我的代码:
但是加载
(50.1003781N, 14.3925125E)
,它被存储在const string & input
中。我想要做的是提取括号,获取代表GPS坐标的数字-50.1003781,保存N,并对第二个坐标执行相同的操作。下面是我的代码:
istringstream iStream(input);
char brackets[2]; //To store the brackets
char types[2]; //To store if it is N/S or W/E
char delim; //To store ","
double degrees[2];
iStream >> brackets[0] >> degrees[0] >> types[0] >> delim;
//The delim loads the "," and here goes my problem with whitespace which is next
iStream >> degrees[1] >> types[1] >> brackets[1];
但是加载
degrees[1]
时失败了,它加载了零,并且tellg()
显示-1,可能是因为逗号后面有空格。解析后的字符串应该像这样:cout << brackets[0]; // "("
cout << degrees[0]; // "50.1003781"
cout << types[0]; // "N"
cout << delim; // ","
cout << degrees[1]; // "14.3925125"
cout << types[1]; // "E"
cout << brackets[1]; // ")"
我尝试了skipws和noskipws,但没有效果。 请问有人可以帮忙吗?非常感谢。
float
或double
类型的对象中才能保存科学计数法中的浮点值。你正在提取一个整数,因此它只取整数部分(10
)。对于程序的第二部分,你提取到了错误的变量,应该执行ss >> extra >> num >> deg
。请参见此处。 - David G