webForumDet fria alternativet

String to char?

7 svar · 612 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej,

Går det att omvandla en sträng till char?
Eller hur kan jag annars lösa detta? Plockar ut en rad från en textfil som hamnar i en string varde;. Den strängen vill jag sedan splitta vid varje mellanrum, tänkte använda strtok men då måste ju den vara i char. :)

spangoMedlem sedan juni 20008 205 inlägg
#2

strtok ska man aldrig använda (står det i manualen), inte ens om man bara skämtar, men för att göra om en string till en char* använder man thestring.c_str()

QimenMedlem sedan juni 20015 009 inlägg
#3

Hur ska man splitta en sträng på bästa sätt då? (sökte och hittade svar av bl.a. dig där det användes strtok ;) ).

QimenMedlem sedan juni 20015 009 inlägg
#4

Den rad jag läser in från textfilen ser ut så här:

1 > 00:00:00:00:00:00 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0

Vill dela vid varje mellanslag och smacka in det i en array. :)

spangoMedlem sedan juni 20008 205 inlägg
#5

Qimen skrev:

(sökte och hittade svar av bl.a. dig där det användes strtok ;) ).

Levde jag som jag lärde skulle jag ha det ännu tristare än jag har det idag ;)
Om man ändå använder C++ är det rätt enkelt att smäcka ihop en själv, här är ett smakprov ut mitt personliga kodbibliotek (måttligt testad, förmodligen buggig, etc):

void strsplit(vector<string> &outcome, const string& str, const string& delims){
  int begin = 0, end;
  do {
    end = str.find_first_of(delims, begin);
    if (end == string::npos)
      end = str.length();
    outcome.push_back(str.substr(begin, end - begin));
    begin = str.find_first_not_of(delims, end);
  } while (begin != string::npos);
}
...
vector<string> words;
strsplit(words, "There is no spoon!", " ");
// words = ["There", "is", "no", "spoon!"]
QimenMedlem sedan juni 20015 009 inlägg
#6

Behöver man inkludera någon extra fil för den funktionen? Får det inte att fungera (är helt ny på c++ så gör säkert många fel. :) ).

1.cpp:12: error: `vector' was not declared in this scope
1.cpp:12: error: `string' was not declared in this scope
1.cpp:12: error: `outcome' was not declared in this scope
spangoMedlem sedan juni 20008 205 inlägg
#7

Japp, vector och string måste inkluderas, och sen måste du using:a std:

#include <string>
#include <vector>
using namespace std;

\r Såg en vårta i koden, snyggade till (allt för Qimen :f )

QimenMedlem sedan juni 20015 009 inlägg
#8

Tack spango. :D

132 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)