将字符串(以char*形式给出)解析为int的C++方式是什么?强大而清晰的错误处理是一个优点(而不是返回零).
我需要将double存储为字符串.我知道我可以使用,printf如果我想显示它,但我只是想将它存储在一个字符串变量中,以便我以后可以将它存储在地图中(作为值,而不是键).
有没有人知道确定字符串值是否"合格"为浮点数的便捷方法?
bool IsFloat( string MyString )
{
... etc ...
return ... // true if float; false otherwise
}
Run Code Online (Sandbox Code Playgroud) 如何使用scanf验证用户输入.现在我有类似的东西,但不起作用.
注意:我有atoi只是为了验证scanf验证是否有效.
scanf("%[0987654321.-]s",buf);
i = atoi(buf);
if(i)
index = i;
Run Code Online (Sandbox Code Playgroud) 我一直在努力寻找这一天的解决方案!你可能会把它标记为重新发布,但我真正想要的是一个没有使用boost lexical cast的解决方案.传统的C++方式很棒.我尝试了这段代码,但它返回了一组乱码数字和字母.
string line;
double lineconverted;
istringstream buffer(line);
lineconverted;
buffer >> lineconverted;
Run Code Online (Sandbox Code Playgroud)
我也试过这个,但它总是返回0.
stringstream convert(line);
if ( !(convert >> lineconverted) ) {
lineconverted = 0;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
编辑:对于我使用的第一个解决方案(乱码)..这是一个快照

检查像"2.4393"或"2"这样的字符串是否有效的最快方法是什么 - 它们都可以用双倍表示,而字符串"2.343".或"ab.34"不是?我特别希望能够读取任何字符串,如果它可以是双,双变量分配给它,如果它不能为双(因为它是一个字或只是无效输入的情况下) ,显示错误消息.
可能重复:
如何在C++中将字符串转换为double?
如何在c ++中将字符串转换为double?
我有一个带有数字的字符串向量,我想将它复制到double类型的向量中
while (cin >> sample_string)
{
vector_string.push_back(sample_string);
}
for(int i = 0; i <= vector_string.size(); i++)
{
if(i != 0 && i != 2 && i != vector_string.size()-1)
vector_double.push_back((double)vector_string[i]);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我不能使用BOOST