【发布时间】:2021-09-08 22:39:04
【问题描述】:
下面的代码按预期编译和工作。在第 11 行,当我更改时std::istringstream iss(temp)
到std::istringstream iss()
,它停止工作。第18行出现错误,iss.str(temp):expression must have class type but it has type "std::istringstream (*)()"
为什么对构造函数进行更改会产生影响?我检查了docs,它不应该有所作为,但我一定遗漏了一些东西。有什么想法吗?
#include <vector>
#include <iostream>
#include <string>
#include <sstream>
int main() {
int n, m;
std::string temp;
std::vector<int> ranked, player;
std::istringstream iss();
// Get the Input
std::getline(std::cin, temp);
n = std::stoi(temp);
std::getline(std::cin, temp);
iss.str(temp);
while(!iss.eof()) {
std::getline(iss, temp, ' ');
ranked.push_back(std::stoi(temp));
}
return 0;
}
【问题讨论】:
-
查找“Most Vexing Parse” - 如果表达式可以被解释为函数声明,那么它将被这样解释。跨度>
标签: c++ istringstream