Permalänk
Medlem

inström tolower c++

Hej!

Håller på med att läsa in massa namn och adress från en txt till en vector<struct>.
Efter eller innan dom sparats i vector<struct> skulle jag vilja göra de till små bokstäver med ::tolower.

någon som kan ge nå tips på detta?

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

std::transform(str.begin(), str.end(), str.begin(), ::tolower);

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem

Som MagnusL skrev.
Alternativt om du vill spara prestanda, editera filen själv med typ notepad++ , ctrl+a, ctrl+u

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem

gud ni får ursäkta men mitt problem är att i filen så fins massa å,ä och ö som inte funkar med ::tolower de var det som är själva problemet ursäkta att jag skrev fel förut.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

Vet inte hur/vad det är tänkt att användas till, vilka miljöer det ska klara av etc etc..
Finns en mängd olika sätt du kan lösa det på.

Du kan prova köra setlocale(LC_ALL, "swedish"); | längst upp i din main.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem
Skrivet av NoPaiN^:

Vet inte hur/vad det är tänkt att användas till, vilka miljöer det ska klara av etc etc..
Finns en mängd olika sätt du kan lösa det på.

Du kan prova köra setlocale(LC_ALL, "swedish"); | längst upp i din main.

om jag förstår hur du menar så ska de funka sedan med ::tolower i alla .cpp filer för å,ä och ö?

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av Mejan:

gud ni får ursäkta men mitt problem är att i filen så fins massa å,ä och ö som inte funkar med ::tolower de var det som är själva problemet ursäkta att jag skrev fel förut.

Vilket operativ system är denna C++ kod tänkt att köras i?

Är det Windows så finns det massa Win32 referenser du kan inkludera. http://winapi.freetechsecrets.com/win32/WIN32String_Manipulat...

Du kan ju kolla upp ifall det finns några till Linux men aja, för windows så löser du alla Unicode samt string relaterade problem med deras win32 bibliotek.

Visa signatur

Speldator: i7-8700k, 32GB DDR4, RTX2080
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift

Permalänk
Medlem

de är tänkt för linux och kom fram till en lössning som funka för mig nu iaf:

string lower(string c) { transform(c.begin(), c.end(), c.begin(), ::tolower); while(c.find("Ä") != string::npos) { c.replace(c.find("Ä"), 2, "ä"); } while(c.find("Å") != string::npos) { c.replace(c.find("Å"), 2, "å"); } while(c.find("Ö") != string::npos) { c.replace(c.find("Ö"), 2, "ö"); } return c; }

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

inge setlocale eller liknade de där är allt plus

#include <string> #include <algorithm> using std::string;

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6