2015-08-08 4 views
-1

Я хотел бы сделать строку из первых двух символов различной строкиполучить только первые 2 символа из строки

Так у меня есть:

int main(int argc, string argv[]) 
{ 
    string s = argv[1]; 
    string key = // here is where I dont know how to get the first 2 chars. 
    printf("%s\n", key); 
} 

Если argv[1] является: 1220kjs, мне нужно строка «ключ» равна 12, argv [1] может быть числом или символами. Поэтому, если argv [1] введен как jths528as, мне нужно, чтобы строка «key» была «jt».

Я пробовал различные методы, но не могу его скомпилировать. s.Substring (0,2) дает мне сообщение об ошибке: член ссылки базового типа «строки» иначе «символ *») не является структура или объединение

Я нашел решение:

string t = argv[1]; 
char key[3]; 
strncpy(key, t, 2); 
key[2] = '\0'; 
+1

какой тип argv? – iliketocode

+2

'argv' - это двухдиапазонный массив, то как можно принять значение' argv [1]: 122085' –

+0

@ un-lucky Похоже, что argv должен быть массивом строк. – Shar1er80

ответ

-1

Ну, вы укажите, что argv[1] установлен в 122085, но это числовое значение, а не строковое значение, поэтому вам нужно будет преобразовать его в строку для начала. Например:

string arg = argv[1].ToString(); 

Теперь вы можете легко выполнить операцию подстроки против этого:

string result = arg.Substring(0,2); 

Таким образом, в целом, вы могли бы что-то вдоль линий:

string result = argv[1].ToString().Substring(0,2); 

Который выводит строковое значение "12";

+0

Если 'argv' является массивом с двумя размерами, как предполагает исходный пост, ваше предложение не будет работать. – Tim

+0

Это правда, но мой ответ основан на следующей строке вопроса: «Если argv [1]: 122085, мне нужно, чтобы строка c была 12». Если это двумерный массив, argv [1] не собирается чтобы уступить много. – Xaniff

0

Учитывая, что вы предоставили в вопросе и интерпретируете свой смысл, я могу только предположить, что argv представляет собой двумерный массив либо int, либо char.

string a = argv[1][0]; // so this has 1 
string b = argv[1][1]; // this has 2 in it 

Вы хотите быть с 12.

int[,] t = new int[2, 6] {{1,2,3,4,5,6}, 
           {1,2,2,0,8,5}}; 

    string a = Convert.ToString(t[1,0]); 
    string b = Convert.ToString(t[1,1]); 

    string c = a+b; // "12" 

здесь вы можете преобразовать его в число, если вам это нужно, как 12

0

Вот метод, который я использовал:

string key = argv[1]; 

char c[3] = {key[0], key[1], '\0'}; 

string s = c; 

printf("string: %s\n", s); 
Смежные вопросы