我正在寻找一种有效的方法来在c ++中获取双字符串。我现在cstring为double函数,但我不能使用它,因为这个字符串是以下格式:
DOUBLE - SPACE - REST OF STRING THAT I ALSO NEED TO SAVE.
问题是double可以有不同的大小,所以如何才能有效地获得double,并且我仍然能够保存其余的字符串。
答案 0 :(得分:4)
std::istringstream s( theString );
s >> theDouble;
s
现在包含字符串的其余部分,可以轻松提取。
答案 1 :(得分:1)
使用istringstream
读取双精度值,忽略一个字符(预期空格),然后读取其余部分。
string s = "1.11 my string";
double d;
string rest;
istringstream iss(s);
iss >> d;
iss.ignore(); // ignore one character, space expected.
getline(iss, rest, '\0');
答案 2 :(得分:0)
如果您的输入具有固定格式。你可以先用空间拆分它。然后你有以下内容:
DOUBLE
REST OF STRING THAT I ALSO NEED TO SAVE.
分割:
std::string str = "3.66 somestring";
std::stringstream ss(str);
std::string buffer;
while(std::getline(ss, buffer, ' ')) {
// add necessary data to containers...
}
现在您可以使用std::atof
来解析双倍。
编辑:添加拆分代码: