gpt4 book ai didi

c++ - istringstream 无效错误初学者

转载 作者:行者123 更新时间:2023-11-28 00:47:26 25 4
gpt4 key购买 nike

我有这段代码:

if(flag == 0)
{
// converting string value to integer

istringstream(temp) >> value ;
value = (int) value ; // value is a
}

我不确定我是否正确使用了 istringstream 运算符。我想将变量“值”转换为整数。

Compiler error : Invalid use of istringstream.

我该如何解决?

在尝试使用第一个给出的答案进行修复之后。它向我显示以下错误:

stoi was not declared in this scope

我们有办法克服它吗?我现在使用的代码是:

int i = 0 ;
while(temp[i] != '\0')
{
if(temp[i] == '.')
{
flag = 1;
double value = stod(temp);
}
i++ ;
}
if(flag == 0)
{
// converting string value to integer
int value = stoi(temp) ;
}

最佳答案

除非你真的需要这样做,否则请考虑使用类似的东西:

 int value = std::stoi(temp);

如果您必须使用 stringstream,您通常希望将其包装在 lexical_cast 函数中使用:

 int value = lexical_cast<int>(temp);

它的代码看起来像这样:

 template <class T, class U>
T lexical_cast(U const &input) {
std::istringstream buffer(input);
T result;
buffer >> result;
return result;
}

至于如何模仿 stoi 如果你没有,我会使用 strtol 作为起点:

int stoi(const string &s, size_t *end = NULL, int base = 10) { 
return static_cast<int>(strtol(s.c_str(), end, base);
}

请注意,这几乎是一个快速而肮脏的模仿,根本没有真正正确地满足 stoi 的要求。例如,如果输入根本无法转换(例如,以 10 为基数传递字母),它实际上应该抛出异常。

对于 double 你可以用同样的方式实现 stod,但是使用 strtod 代替。

关于c++ - istringstream 无效错误初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770851/

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