2016-09-01 2 views
2

Warum unterscheidet sich strcat (mystring) von mystring?

[~, currenthost] = system('hostname'); 
table({currenthost}, 'VariableNames', {'host'}) 

ans = 

     host 
    __________ 

    [1x9 char] 

während tun

[~, currenthost] = system('hostname'); 
table({strcat(currenthost)}, 'VariableNames', {'host'}) 

gibt

ans = 

     host 
    _________ 

    'my-hostt' 

Warum gibt tun?

Antwort

6

Der tatsächliche Unterschied ist weniger als das, was Sie denken.

strcat entfernt nachfolgende Leerzeichen. Ihre currenthost Variable ist 'my-hosttt ' (beachten Sie das letzte Leerzeichen). Wenn Sie strcat aufrufen, wird das letzte Leerzeichen entfernt.

Zufälligerweise ist MATLAB Limit, um Zeichen in Tabellen anzuzeigen, 9, wenn also eine Zeichenfolge der Länge 8 ist, wird die Zeichenfolge selbst angezeigt, wenn sie länger ist, wird es Ihnen nur die Länge davon angeben!

Lange Geschichte kurz: sie sind die gleichen Typ, mit einem Charakter weniger. MATLAB zeigt sie nur aufgrund ihrer Länge unterschiedlich an.

+1

Ja, das war es. Wie soll man aber in der Matlab-Befehlszeile nachstehende Leerzeichen bemerken ?! – jakub

+0

@jakub yeah ... du hattest nur das Pech, dass dein Hostname 8 Zeichen lang ist. Wenn es 9 wäre, würden Sie 1x9 und 1x10 Char-Arrays realisieren! –

+0

@jakub werfen Sie einen Blick [hier] (http://stackoverflow.com/q/37998621/3372061) für einen Trick, um Leerzeichen zu halten, wenn Sie 'strcat' verwenden. –

Verwandte Themen