gpt4 book ai didi

c++ - 需要帮助来理解我的字符串出错的地方

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:10 25 4
gpt4 key购买 nike

在 c++ 中,我们有 std::to_string 将 int/float/double 转换为字符串。因此,为了测试我对模板的理解,我尝试了以下代码:

#include "iostream"
#include "sstream"
#include "string"
using std::cout;

template <typename T>
std::string getString(const T& data){
std::stringstream ss;
cout << '\n' << data << '\n';
ss << data;
std::string s;
ss >> s;
return s;
}

int main(int argc , char** argv){
cout << getString(1.0000011);
cout <<' '<<std::to_string(1.0000011);
return 0;
}

但是,输出没有意义,to_string 给我 1.0000011,而 getString 得到 1 并给我 1。因为我我正在使用模板 getString 不应该也得到 1.0000011 并给我 1.0000011 吗?

最佳答案

您可以使用 std::setprecision<iomanip>标题设置 std::stringstream 的精度将在格式化数字数据时使用。

例如:

std::stringstream ss;
ss << std::setprecision(9) << data;
cout << ss.str();

将打印:

1.0000011

这是一个在线快速演示:cpp.sh/9v7xf

作为旁注,您不必创建 stringstringstream 的输出- 您可以替换 getString() 中的最后 3 行与:

return ss.str();

关于c++ - 需要帮助来理解我的字符串出错的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41581821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com