Şu anda programda metin satırındaki metinden satır okumak, her satırdan veri ayıklamak istiyorum. Metin dosyasındaki her satır “A” harfi ve ardından “2” harfi gibi bir harf ve ardından “2” gibi bir tamsayı içerir. verilerdeki okumalı programda fonksiyon şu anda şöyle görünür: 0 konumunda ALLDATA değişken (ALLDATA [0]) yerine harfi yani sadece tek bir karakterin listeleme böyle bir sayısını listeler AncakBir Metin Dosyasındaki Verilerin Okunması ve Her Satırda İçeren Verilerin Ayrılması
void readFile()
{
std::ifstream aFile;
std::string alldata;
std::string letter;
aFile.open("KeyPopularity.txt");
while (std::getline(aFile, alldata))
{
letter = alldata[0];
for (int i = 0; i < keyboardKeys.size(); i++)
{
if (keyboardKeys[i].character==letter)
{
keyboardKeys[i].noOfPresses = int(alldata[2]);
}
std::cout << letter << " ";
std::cout << int(alldata[2]) << "\n";
}
}
aFile.clear();
}
mektubun önce 87 gibi. Sadece W'ye karşı 87 W Soru şu ki bu bir satır dizisinin 0 pozisyonundaki mektubu ve pozisyondaki sayıyı elde etmek için metin dosyası satırındaki her satırdaki verileri ayıklamak için bir yol var. Satır dizgisi 2?
Bir daha gözlem: eğer pres sayısı Dosyadan okumak 9'dan büyük, daha sonra yukarıdaki kod işe yaramaz, çünkü sadece ilk rakamı okur. Kodu, ilk iki karakteri alldata'dan (bu nedenle anahtar ve ':') şeritleyecek şekilde ayarlayabilirsiniz, bunu alldata.erase (0, 2) ile yapabilirsiniz. Ardından, sonuç dizesini bir tam sayı, keyboardKeys [i] .noOfPresses = stoi (alldata); Ancak stoi sadece C++ 11'de kullanılabilir, daha eski C++ için stdlib.h eski eski [atol] (http://www.cplusplus.com/reference/cstdlib/atol/) kullanabilirsiniz. –