为什么清理istringstream会失败?
Why does cleaning istringstream fail?
在将字符串转换为整数时,我未能清除我的 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&)'|
谢谢:)
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;
您不能调用已经构造的对象的构造函数 convert(c)
。要设置要解析的新字符串,您需要调用函数 str(c)
。所以你需要把它改成:
convert.str(c);
在将字符串转换为整数时,我未能清除我的 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&)'|
谢谢:)
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;
您不能调用已经构造的对象的构造函数 convert(c)
。要设置要解析的新字符串,您需要调用函数 str(c)
。所以你需要把它改成:
convert.str(c);