Witam, czy jest jakaś metoda, funkcja z bib. Stringów, która pozwala na zapisanie wartości przed znakiem, który został oznaczony jako kluczowy?
Chodzi mi o coś takiego:
W = 7
Szukamy wszystkich znaków które są przed =, czyli w tym wypadku w.
Witam, czy jest jakaś metoda, funkcja z bib. Stringów, która pozwala na zapisanie wartości przed znakiem, który został oznaczony jako kluczowy?
Chodzi mi o coś takiego:
W = 7
Szukamy wszystkich znaków które są przed =, czyli w tym wypadku w.
Rozwiązań może być kilka. Rzuć się jakimś kodem.
np.
string
a do sstream
i pobierasz wszystko do spacji operatorem >>
.=
metodą find()
i kopiujesz wszystko do znalezionej pozycji do nowego string
a.Np.
Kod w pliku .txt
keyA = 1
keyB = 2
Potrzebuje to do czytania id przycisków z pliku, gry, może jest inny sposób, jakia ciekawszy.
std::string attributes;
char ignored_char;
int contents;
// otwieranie pliku
file >> attributes >> ignored_char >> contents;
Np. tak.. szybki test..
#include <iostream>
#include <algorithm>
#include <string>
#include <tuple>
std::tuple<std::string, std::string>
parseString(const std::string * ln) {
std::string key{};
std::string value{};
auto itSeparator = std::find(ln->cbegin(), ln->cend(), '=');
if(itSeparator != ln->cend() && itSeparator != ln->cend()) {
key = std::string(ln->cbegin(), itSeparator);
}
++itSeparator;
if(itSeparator != ln->cend()) {
value = std::string(itSeparator, ln->cend());
}
return std::make_tuple(key, value);
}
int main() {
std::string line1 = "key1 = 1433";
std::string line2 = "key2= 133";
std::string line3 = "key3 =1313";
std::string line4 = "key4=1554";
std::string line5 = "=1554";
std::string line6 = "key6=";
std::string line7 = "=";
for(const auto& ln: {
&line1, &line2, &line3, &line5, &line6, &line7 }) {
auto strKeyValue = parseString(ln);
std::cout << "Key: |" << std::get<0>(strKeyValue)
<< "|\tValue: |" << std::get<1>(strKeyValue) << "|\n";
}
}
Ale jak chcesz być jeszcze bardziej restrykcyjny, stringstream będzie lepszy.