вставить дефис в строку C ++ - PullRequest
0 голосов
/ 17 ноября 2009

У меня есть массив строк телефонных номеров, и я должен вставить в них дефисы. какую строковую функцию я должен использовать и как? Благодарю. : D

Ответы [ 4 ]

1 голос
/ 17 ноября 2009

Ну, я не буду давать ответ, но самое простое, что нужно сделать, это использовать метод std::string::insert, предполагая, что вы используете C ++.

Для строк C вам придется вручную копировать символы вокруг. Я бы, вероятно, использовал sprintf.

1 голос
/ 17 ноября 2009

Использовать строковые функции STL. Выполните итерацию по массиву строк, и для каждой строки сделайте следующее:

str_num = str_num.substr(0,3) + "-" + str_num.substr(3,3) + "-" + str_num.substr(6,4);

РЕДАКТИРОВАТЬ: Вы также можете использовать insert(), я думаю, что было бы лучше.

0 голосов
/ 17 ноября 2009

То, что вы хотите, это добавить два символа к каждой строке в двух конкретных позициях.

Создайте функцию, которая принимает строку из одного телефонного номера и добавляет дефисы, где это необходимо. Это хороший пример, когда просто использовать конкатенацию строк, но это плохая привычка. Вместо этого вы можете использовать string::insert() для размещения дефисов там, где это необходимо.

Как только вы написали эту простую функцию, все, что вам нужно сделать, - это перебрать массив и применить функцию к каждому элементу. По совпадению функция for_each() может сделать именно это. Вы найдете это в <algorithm>.

#include<string>
#include<algorithm>

void with_hyphens(string& phone)
{
    // as explained above
}

// ...
{
    for_each(array, array + ARRAY_LENGTH, &with_hyphens);
}
0 голосов
/ 17 ноября 2009

Вы можете использовать функцию strtok, чтобы разбить ее на токены.

char * strtok ( char * str, const char * delimiters );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...