将字符串转换为整数时,我无法清除我的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&)'|
谢谢:)
答案 0 :(得分:4)
一旦构造了对象,就不能调用它的构造函数convert(c)
。要设置要解析的新字符串,您需要调用函数str(c)
。所以你需要把它改成:
convert.str(c);
答案 1 :(得分: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;