gpt4 book ai didi

c++ - 将 int 放入 stringstream 时,它会插入奇怪的字符

转载 作者:行者123 更新时间:2023-11-30 01:25:56 28 4
gpt4 key购买 nike

我正在尝试使用字符串流将整数转换为字符串。我这样做:

std::string const DilbertImage::startUrl = "http://tjanster.idg.se/dilbertimages/dil";
std::string const DilbertImage::endUrl = ".gif";

DilbertImage::DilbertImage(int d)
{
cal.setDate(d);

int year, month, date;

year = cal.getYear();
month = cal.getMonth();
date = cal.getNumDate();

std::stringstream ss;

ss << year << "/";

if(month < 10)
{
ss << 0;
}

ss << month << "/" << "Dilbert - " << cal.getNumDate() << ".gif";

filePath = ss.str();

ss.str("");
ss.clear();

ss << startUrl << date << endUrl;

url = ss.str();

std::cout << url << '\t' << filePath << std::endl;
}

我希望得到两个像这样的漂亮字符串:

url: http://tjanster.idg.se/dilbertimages/dil20060720.gif
filePath: /2006/07/Dilbert - 20060720.gif

但是,当我将整数放入字符串流中时,它们以某种方式最终得到空格(或在它们中间插入一些其他空白字符)当我从控制台窗口粘贴它时,该字符显示为 *。

他们最终看起来像这样:

url: http://tjanster.idg.se/dilbertimages/dil20*060*720.gif 
filepath: /2*006/07/Dilbert - 20*060*720.gif

为什么会这样?

这是整个项目:http://pastebin.com/20KF2dNL

最佳答案

"*" 字符是一个 thousands separator .有人一直在弄乱你的 locale .

这可能会解决问题:

std::locale::global(std::locale::classic());

如果您只想覆盖 numpunct facet(它决定了数字的格式):

std::locale::global(std::locale().combine<std::numpunct<char>>(std::locale::classic()));

在您的情况下,当您设置瑞典语言环境时:

std::locale swedish("swedish");
std::locale swedish_with_classic_numpunct = swedish.combine<std::numpunct<char>>(std::locale::classic());
std::locale::global(swedish_with_classic_numpunct);

关于c++ - 将 int 放入 stringstream 时,它会插入奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430442/

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