這段代碼不斷在我嘗試檢索的字符串前面投擲一個空格。C++ getline在字符串開頭添加空格
void Texture_Manager::LoadSheet(std::string filename, std::string textfile)
{
std::ifstream infofile(textfile);
if (infofile.is_open())
{
std::string line;
while(std::getline(infofile, line))
{
std::string texturename;
sf::IntRect texture;
texture.height = 32; //these will be dynamic based on what the text file defines as the pixel sizes
texture.width = 32;
if(line.find("<name>") != std::string::npos)
{
std::size_t pos1 = line.find("<name>") + 6; //Search for the name of the texture
std::size_t pos2 = line.find(";", pos1);
std::size_t namesize = pos1 - pos2;
texturename = line.substr(pos1, namesize);
std::cout << texturename << std::endl;
}
}
}
這是我正在閱讀的文件。我試圖獲得這個名字,它一直在沙漠和草地上放置一個空間。
<collection>tilemapsheet;
<ratio>32;
<name>desert; <coords>x=0 y=0;
<name>grass; <coords>x=32 y=0;
如果任何人有更好的建議,如何做到這一點以及我會很感激任何建設性的批評。我基本上搜索某個單詞,然後讀取信息以設置sfml中的紋理 – Joshua
您確定該空間沒有被前面的「cout」調用輸出嗎?另外(不相關的),你應該把',pos1'放在你搜索的末尾;'''如果前面有一個' –
這是我的代碼中的第一個cout調用。謝謝你的提示。它爲沙漠和草地提供了一個空間。它在沙漠之後立即打印草而不會離開while循環。 – Joshua