0

在将字符串转换为整数时,我只是无法清除 istringstream 以放入另一个数字。我已经尝试了各种不同的解决方案,但它就是行不通。有一些解决方法,但我想知道为什么......

所以基本上这就是我的代码的样子

#include <iostream>
#include <string>
#include <sstream>

int main() {

  std::string a = "153";
  std::string c = "2556";

  int b;

  std::istringstream convert(a);

  convert >> b;

  std::cout << b << std::endl;

  convert.str( std::string() );
  //convert.str("");
  convert.clear();

  convert(c);

  convert >> b;

  std::cout << b << std::endl;

  return 0;
}

以及以下输出错误

C:\...\string to int.cpp|28|error: no match for call to '(std::istringstream {aka std::basic_istringstream<char>}) (std::string&)'|

谢谢 :)

4

2 回答 2

4

一旦已经构造,就不能调用convert(c)对象的构造函数。要设置要解析的新字符串,您需要调用函数str(c)。因此,您需要将其更改为:

convert.str(c);
于 2016-04-02T14:23:03.833 回答
2

convert(c);将需要std::istringstream定义一个函数调用运算符,该运算符operator()可以使用类型的左值调用std::string。不是这种情况。

您可以使用clear()str()

std::string a = "153";
std::string c = "2556";
int b{ 0 };
std::istringstream convert{ a };
convert >> b;
std::cout << b << std::endl;
convert.clear();
convert.str(c);
convert >> b;
std::cout << b << std::endl;
于 2016-04-02T14:18:04.937 回答