4
我有这样的输入:(50.1003781N, 14.3925125E)
它存储在const string & input
。我想要做的是提取括号,得到代表GPS协调的数字 - 50.1003781,保存N并为第二个坐标同样做。C++ istringstream和空白
所以这里去我的代码:
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但没有效果。有人可以帮忙吗?非常感谢。
快速问题,为什么下面的代码不像行为问题中的代码? [code](http://pastie.org/8971910) –
@ viki.omega9您尚未描述两个程序之间的行为差异,但仅仅是您可以在科学记数法中将浮点值保存在键入'float'或'double'。你正在提取一个整数,所以它只占用整数部分('10')。而对于程序的第二部分,你提取了错误的变量,你应该做'ss >> extra >> num >> deg'。 [见这里](http://ideone.com/nO4Nyt) – 0x499602D2