【发布时间】:2015-09-18 17:28:12
【问题描述】:
我正在尝试读取文件,然后将内容(以空格分隔)放入变量中。 文件的内容每行总是相似的。它看起来像这样:
(50,60) CIRCLE yellow 10
(100,160) CIRCLE red 20
这些值是位置、名称、颜色和直径。
这是我目前得到的:
#include <SFML/Graphics.hpp>
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "Practicum week 3");
std::ifstream input("input.txt");
std::string name;
std::string line;
sf::Vector2f position;
sf::Color colour;
while (std::getline(input, line))
{
input >> position >> name;
}
while (window.isOpen()) {
sf::Event Event;
while (window.pollEvent(Event)) {
if (Event.type == sf::Event::Closed) { window.close(); }
}
// Start frame
window.clear();
// End frame & display contents
window.display();
}
return 0;
}
这里的问题是在input >> position >> name; 它给了我一个错误:
“错误:没有运算符 '>>' 匹配这些操作数” 操作数类型为:std::ifstream >> sf::vector2f
我已经看到很多解决这个问题的方法是缺少#include,但正如你所见,我已经解决了这个问题。
我错过了什么吗?
【问题讨论】:
-
什么是
sf::Vector2f?是否为它定义了operator >>? -
@Angew sf::Vector2f 是来自 SFML 的 (x,y) 向量,它基本上是我要绘制的对象的位置(但那是稍后的)。我没有重载 >> 运算符,因为我不确定我将如何去做。
-
Vector2f没有重载operator >>,所以不能这样使用。 -
好吧,如果你还没有为它编码
operator >>,而 SFML 也没有提供,你为什么期望使用>>工作? -
@Angew 好吧,我不知道 SFML 必须提供一个。我以为我可以将 (10,20) 传递给 Vector2f。我应该将它发送到一个字符串,然后改为将其更改为 vector2f 吗?
标签: c++ string file-io operators