【问题标题】:How do I find the correct data type to convert a string to?如何找到将字符串转换为的正确数据类型?
【发布时间】:2016-08-26 05:38:47
【问题描述】:

我有一个字符串向量,它在向量的每个位置都包含数值,我想知道如何让我的程序判断如何转换字符串中的值,例如将它们转换为双精度数或整数或浮点数合适的时候。

vector <string> SeperatedValues;
SeperatedValues.push_back("22");
SeperatedValues.push_back("4.1");
SeperatedValues.push_back("80.41");
SeperatedValues.push_back("2");

是否有任何内置函数可以为我做到这一点!

我可以将所有内容都转换为双精度值,但这效率不高,因为字符串中的值可能适合整数而不需要双精度值!

【问题讨论】:

  • 我不知道你的号码是从哪里来的,但是首先不将它们存储为strings 怎么样? :)
  • 标准库具有尝试转换并在失败时抛出的函数(自C++11)。但是,寻找尽可能少的数据类型的蛮力可能会降低程序的速度,而不仅仅是使用宽数值类型。
  • @CompuChip 我很乐意这样做,因为它会让爱变得更容易,但这些数字是从另一个包含数字和字符的向量中提取的,这与它们的方式有关被放入我的系统! :)
  • 我建议你应该分析你的代码,看看这种“效率”增益是否真的值得。
  • @StoryTeller,这意味着我要么必须牺牲内存或速度?如果我理解正确!

标签: c++ string vector type-conversion


【解决方案1】:

您可以检查字符串是否有“。”字符,如果不转换为int,否则为double

【讨论】:

  • "5.36E-10" 怎么样,这也是一个浮点字符串。在破解自己的解决方案之前,您应该始终了解标准库的内容。
  • 根据语言环境,那个“.”可能是“,”(可能还有其他字符 - 不确定)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多