webForumDet fria alternativet

Strängar

4 svar · 288 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

Håller på med programmeringsövningarna i c++ programmering av stephen prata.

Har en stucten box:

struct box
{
char maker[40];
float height;
float width;
float length;
float volume;
};

Förösker tilldela ett värde till maker men får felet:

Compiling...
main.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\kap7_kod3\main.cpp(20) : error C2440: '=' : cannot convert from 'char [12]' to 'char [40]'
There is no context in which this conversion is possible
Error executing cl.exe.

main.exe - 1 error(s), 0 warning(s)

Ska man inte kunna tilldela en sträng genom att skriva:

box.maker = "blablabla";

:q

MuzzafarathMedlem sedan apr. 20002 487 inlägg
#2

Nej, det skall man inte kunna :P char maker[40]; är en vanlig array egentligen, och man kan inte tilldela dom på det viset med =-operatorn. För att kunna använda =-operatorn på strängar måste man skriva en speciell klass för det. I STL (Standard Template Library) kallas den för "string" (konstigt, eller hur? ;)).

Nåväl, när du vill tilldela ett värde till "maker" får du använda dig utav funtkionen strcpy(). http://www.cplusplus.com/ref/cstring/strcpy.html

Nexus86Medlem sedan okt. 20023 030 inlägg
#3

Om du hellre vill använda string kan du kolla på http://www.webforum.nu/showthread.php?s=&threadid=63553

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Ok, tack det funkade bra med strcpy.
Får väl ta och titta lite på hur string funkar. HAr dock ingen använding av det för de3t här 40 rader långa programmeringsövningen :)

PeWMedlem sedan juni 200010 432 inlägg
#5

Vill du inte använda dig av string men behöver kopiera chararrayer, kan följande funktion användas:
(kopierar s2 till s1)

void copyMyString(unsigned char *s1,unsigned char *s2){
  while((*(s1++)=*(s2++))!=0);
}
133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)